C#DROPDOWNLIST二级联动的问题
两个DROPDOWNLIST一个button,第一个DROPDOWNLIST选择后到数据库中查找对应的项填充到第二个DROPDOWNLIST里,第二个选择好后点butto...
两个DROPDOWNLIST一个button,第一个DROPDOWNLIST选择后到数据库中查找对应的项填充到第二个DROPDOWNLIST里,第二个选择好后点button提交数据。
目前只处理到按照第一个数的字段查找数据库的对应的项,不知道怎么填充到第二个DROPDOWNLIST里。高手帮忙下! 展开
目前只处理到按照第一个数的字段查找数据库的对应的项,不知道怎么填充到第二个DROPDOWNLIST里。高手帮忙下! 展开
展开全部
这还得看你的数据库是怎么设计的呢?
举个例子吧,设计产品数据库,包含2个表
表1:产品分类表(ID,分类的名称)
表2:产品表(ID,产品的名字,产品分类(表1的主键))
第一种方法:同步刷新
在页面显示的时候,第一个DROPDOWNLIST绑定到产品分类表,并且设置它的AutoPostBack属性为True
然后在Page_Load事件里面写入:
if (IsPostBack)
{
try
{
Int32 id = Int32.Parse(DropDownList1.SelectedValue);
string sql = "SELECT [ID], [产品名称] FROM [产品表] WHERE ([分类ID] = " + id + ")";
DataTable Dt = DbHelper.OleDbHelper.GetDataSet(sql).Tables[0];//这是我自己写的一个数据库操作类,返回一个数据表格
string code, name;
DropDownList2.Items.Clear();//清除上次的内容
for (int i = 0; i < Dt.Rows.Count; i++)
{
code = Dt.Rows[i]["ID"].ToString();
name = Dt.Rows[i]["产品名称"].ToString();
DropDownList2.Items.Add(new ListItem(name, code));//填充数据
}
}
catch { }
}
第二种,异步刷新
先在页面里面放入一个ScriptManager,再放入一个UpdatePanel,然后在UpdatePanel里面放入2个DropDownList,其他步骤和第一种一样。
举个例子吧,设计产品数据库,包含2个表
表1:产品分类表(ID,分类的名称)
表2:产品表(ID,产品的名字,产品分类(表1的主键))
第一种方法:同步刷新
在页面显示的时候,第一个DROPDOWNLIST绑定到产品分类表,并且设置它的AutoPostBack属性为True
然后在Page_Load事件里面写入:
if (IsPostBack)
{
try
{
Int32 id = Int32.Parse(DropDownList1.SelectedValue);
string sql = "SELECT [ID], [产品名称] FROM [产品表] WHERE ([分类ID] = " + id + ")";
DataTable Dt = DbHelper.OleDbHelper.GetDataSet(sql).Tables[0];//这是我自己写的一个数据库操作类,返回一个数据表格
string code, name;
DropDownList2.Items.Clear();//清除上次的内容
for (int i = 0; i < Dt.Rows.Count; i++)
{
code = Dt.Rows[i]["ID"].ToString();
name = Dt.Rows[i]["产品名称"].ToString();
DropDownList2.Items.Add(new ListItem(name, code));//填充数据
}
}
catch { }
}
第二种,异步刷新
先在页面里面放入一个ScriptManager,再放入一个UpdatePanel,然后在UpdatePanel里面放入2个DropDownList,其他步骤和第一种一样。
展开全部
这个要在前一个dropdownlist的SelectedIndexChanged事件里面编写触发事件,这样当前一个
dropdownlist的值改变之后才能出发后面的dropdownlist的联动效果给个例子你参考下,希望能对你有帮助
private void Bindnav()
{
conn.conn cc=new whmx.admin.conn.conn();
DataTable dt=cc.shownav().Tables[0];
this.DropDownList1.DataSource=dt;
this.DropDownList1.DataTextField="navname";
this.DropDownList1.DataBind();
}
/// <summary>
/// 绑定 headname
/// </summary>
private void Bindhead()
{
string navname=String.Empty;
navname=this.DropDownList1.SelectedItem.Text;
if(this.DropDownList1.SelectedItem.Text==navname)
{
conn.conn dd=new whmx.admin.conn.conn();
DataTable dt=dd.showheadname(navname).Tables[0];
foreach(DataRow row in dt.Rows)
{
this.DropDownList2.Items.Add(row["headname"].ToString());
}
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
this.DropDownList2.Items.Clear();
Bindhead();//级联绑定navname
}
dropdownlist的值改变之后才能出发后面的dropdownlist的联动效果给个例子你参考下,希望能对你有帮助
private void Bindnav()
{
conn.conn cc=new whmx.admin.conn.conn();
DataTable dt=cc.shownav().Tables[0];
this.DropDownList1.DataSource=dt;
this.DropDownList1.DataTextField="navname";
this.DropDownList1.DataBind();
}
/// <summary>
/// 绑定 headname
/// </summary>
private void Bindhead()
{
string navname=String.Empty;
navname=this.DropDownList1.SelectedItem.Text;
if(this.DropDownList1.SelectedItem.Text==navname)
{
conn.conn dd=new whmx.admin.conn.conn();
DataTable dt=dd.showheadname(navname).Tables[0];
foreach(DataRow row in dt.Rows)
{
this.DropDownList2.Items.Add(row["headname"].ToString());
}
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
this.DropDownList2.Items.Clear();
Bindhead();//级联绑定navname
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个dropdownlist你绑定好了,在dropdownlist1_SelectedIndexChange事件中根据dropdownlist1.selectitem.value去数据库中查找相关数据,吧数据绑定到dropdownlist2中就可以了,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选择第一个项时加值改变事件 调用后台方法,查询相应数据 在后台指定第二个数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询