表Auth_TB_Operator 有Id Name字段
21 刘瑜晓
表OpRsk_TB_Department 有Id Caption ManagerID 字段
1 人力与行政办公 21其中Auth_TB_Operator的Id和OpRsk_TB_Department的ManagerID字段可以确定两个表的Name和Caption关系,现在有两个dropdownlist,第一个dropdownlist绑定Caption字段,第二个dropdownlist绑定Name字段,如何当第一个dropdownlist改变时,第二个dropdownlist也随着改变?
21 刘瑜晓
表OpRsk_TB_Department 有Id Caption ManagerID 字段
1 人力与行政办公 21其中Auth_TB_Operator的Id和OpRsk_TB_Department的ManagerID字段可以确定两个表的Name和Caption关系,现在有两个dropdownlist,第一个dropdownlist绑定Caption字段,第二个dropdownlist绑定Name字段,如何当第一个dropdownlist改变时,第二个dropdownlist也随着改变?
<script>
function change(obj)
{
var select=document.getElementById('<%=DropDownList2.ClientID %>');
for(var i=0;i<select.options.length;i++)
{
if(select.options[i].value==obj.value)
select.options[i].selected=true;
}
}
</script><asp:DropDownList ID="DropDownList1" onchange="change(this);" runat="server">
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server">
</asp:DropDownList>protected DataTable getDataTableOperator()
{ System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("ID", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Name", typeof(System.String)));
dr = dt.NewRow();
dr[0] = 1;
dr[1] = "小明";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "小强";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "小张";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "小李";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "小关";
dt.Rows.Add(dr);
return dt;
}
protected DataTable getDataTableDepartment()
{ System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("ID", typeof(System.Int32)));
dt.Columns.Add(new System.Data.DataColumn("Caption", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("ManagerID", typeof(System.Int32)));
dr = dt.NewRow();
dr[0] = 1;
dr[1] = "A";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "B";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "C";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "D";
dr[2] = 2;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "E";
dr[2] = 2;
dt.Rows.Add(dr);
return dt;
} protected void Page_Load(object sender, EventArgs e)
{
DropDownList1.DataSource = getDataTableOperator();
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "ID";
DropDownList1.DataBind();
DropDownList2.DataSource = getDataTableDepartment();
DropDownList2.DataTextField = "Caption";
DropDownList2.DataValueField = "ID";
DropDownList2.DataBind();
}
2个DropDownList分别绑定2个表,
在第一个DropDownList1中
{.....
this.DropDownList1.DataTextField=Caption;
this.DropDownList1.DataValueField=Id;
}
在第二个DropDownList2中
{.....
Selelct name from Auth_TB_Operator where Id="+this.DropDownList1.SelectedValue"
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Init()
}
private void Init()
{
string strSel = "select Name from Auth_TB_Operator where ID = " + this.DropDownList1.SelectedValue
;
}
其中第一个菜单 的this.DropDownList1.DataTextField = "Caption";
this.DropDownList1.DataValueField = "ManagerID";
你可以这样做,我做了两个下拉菜单,当选择第一个菜单时,根据第一个菜单选择的内容初始化第二个菜单
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
Init()
}
private void Init()
{
string strSel = "select Name from Auth_TB_Operator where ID = " + this.DropDownList1.SelectedValue
;
....
}
在page_load里这样设置
string strSel = "select Caption,ManagerID from Auth_TB_Operator"; SqlCommand selcom = new SqlCommand(strSel, conn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = selcom;
DataSet ds = new DataSet();
da.Fill(ds, "option"); this.DropDownList1.DataSource = ds.Tables["option"].DefaultView;
this.DropDownList1.DataTextField = "Caption";
this.DropDownList1.DataValueField = "ManagerID";
this.DropDownList1.DataBind();
正解!
比喻說:
你要是用asp.net中的DropDownList的話代碼全部寫在.cs裡面你就要打開第一個DropDownList的AutoPostBack屬性,方能實現連動,如果還要不刷新,ajax 控件的UpdatePanel 記住一定先將ScriptManager控件加上 用javascirpt就不說了 簡單了點
不过二楼的方法在后台取得数据时要用this.Request.Form.Get("控件ID")获取数据,不能用this.DropDownList1.SelectedValue获取数据