頁面中有3個下拉選單,第一個下拉串列動態加載資料,當選擇完第一個下拉選單后,第二個下拉選單動態顯示資料,以此類推,選擇完第二個下拉選單后,第三個下拉選單動態加載資料。如何使用一張資料表實作此功能呢?怎樣進行資料庫設計呢?求表設計,謝謝!
uj5u.com熱心網友回復:
對于只建立一張表,資料的增刪改查該怎么實作呢?uj5u.com熱心網友回復:
列:id,parentid,內容。。。。。
每個parentid指向父級的id。
頂級id為0。
正常的選單表,很多都這么玩。
uj5u.com熱心網友回復:
每次點擊父級,查詢他的子集,也就是parentid指向當前id的行uj5u.com熱心網友回復:
對于資料庫中表中增加3個列的顯示名稱,對這三個列的名稱進行級聯。uj5u.com熱心網友回復:
能貼一下代碼嗎?謝謝uj5u.com熱心網友回復:
你說的大致思路我也知道,但是代碼不知道該怎么實作?uj5u.com熱心網友回復:
https://blog.csdn.net/hanjun0612/article/details/50563136這是一個選單遞回的例子。
但是你這邊如果是點一下加載一下,那就沒必要遞回了。
資料模型是一樣的
uj5u.com熱心網友回復:
這個僅僅是查詢,對于增刪改這個不好處理。uj5u.com熱心網友回復:

id是自己的,parent是上級選單,title是自己顯示文本
先設定最頂級選單的parent為-1,你點這個選單獲取到這個選單的id,然后查哪些選單的parent是這個id,這些選單就是他的兒子,
多級也同理,獲取自身id,根據這個id查兒子就行
如果要修改顯示文本,根據這個id來update就好了
uj5u.com熱心網友回復:

三級聯動如果開始沒有資料,但是錄入的時候parentid如何動態指定呢?
uj5u.com熱心網友回復:
一級選單去資料庫查啊,parent是-1的就是頂級選單,這個-1是固定的,直接放到一級單位里面,他選了頂級選單,把這個選單的id傳到后臺,去資料庫獲取這個id的兒子,添加到二級單位的下拉框里面,一直這樣往下操作就行了
uj5u.com熱心網友回復:
分級別系結唄uj5u.com熱心網友回復:
給你個例子把,省市區聯動
public partial class Form1 : Form
{
DataTable dt;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add("Id", typeof(int));//Id
dt.Columns.Add("Title", typeof(string));//
dt.Columns.Add("Parent", typeof(string));//父選單
dt.Rows.Add(1, "浙江省", "-1");
dt.Rows.Add(2, "杭州市", "1");
dt.Rows.Add(3, "臨安區", "2");
dt.Rows.Add(4, "金華市", "1");
dt.Rows.Add(5, "蘭溪市", "4");
DataTable firstDt = dt.Rows.Cast<DataRow>().Where(a => a.Field<string>(2).ToString() == "-1").CopyToDataTable();
comboBox1.DataSource = firstDt;
comboBox1.DisplayMember = "Title";
comboBox1.ValueMember = "Id";
comboBox1.SelectedIndexChanged += ComboBox1_SelectedIndexChanged;
comboBox2.SelectedIndexChanged += ComboBox2_SelectedIndexChanged;
comboBox3.SelectedIndexChanged += ComboBox3_SelectedIndexChanged;
}
private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (!((ComboBox)sender).ContainsFocus)
{
return;
}
DataTable secondDt = dt.Rows.Cast<DataRow>().Where(a => a.Field<string>(2).ToString() == comboBox1.SelectedValue.ToString()).CopyToDataTable();
comboBox2.DataSource = secondDt;
comboBox2.DisplayMember = "Title";
comboBox2.ValueMember = "Id";
}
private void ComboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (!((ComboBox)sender).ContainsFocus)
{
return;
}
DataTable secondDt = dt.Rows.Cast<DataRow>().Where(a => a.Field<string>(2).ToString() == comboBox2.SelectedValue.ToString()).CopyToDataTable();
comboBox3.DataSource = secondDt;
comboBox3.DisplayMember = "Title";
comboBox3.ValueMember = "Id";
}
private void ComboBox3_SelectedIndexChanged(object sender, EventArgs e)
{
if (!((ComboBox)sender).ContainsFocus)
{
return;
}
MessageBox.Show(((ComboBox)sender).SelectedValue.ToString());
}
}
uj5u.com熱心網友回復:
一級選單如果開始沒有資料,資料庫中也沒有資料。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/60536.html
標籤:C#
上一篇:web在本地除錯可以清除cookie,但是部署到服務器以后就無法清除cookie了,有沒有人遇到過類似情況怎么解決的?
