我有一个下拉列表,该列表绑定到dataTable,如下所示:
MatID MatName MatGroupID
1 Mat1 11
2 Mat2 22
3 Mat3 33
<asp:DropDownList ID="DropDownList_MAT" runat="server" AutoPostBack="true" OnSelectedIndexChanged="UpdateDetails" DataTextField="MatGroupID" DataValueField="Matname" />
<asp:Label ID="Label_StaticMatName" runat="server" />
代码:
protected void UpdateDetails(object sender, EventArgs e)
{
Label_StaticLockGroupName.Text = DropDownList_MAT.SelectedItem.Value;
}
MatGroupID我已经指定为DataTextField,DataValueField是MatName。当我在下拉列表中选择一个值时,我希望textfield是值字段以及MatID。我如何维护MatID,因为用户每次都选择下拉值
答案 0 :(得分:1)
为Mat创建一个类(也包括MatGroupId和MatId),因此您只需将类中的唯一ID保存为DataValue,稍后您将从唯一ID中获取该类,然后您将获得所有存储的内容您的类中的数据,因为您无法存储倍数DataValueFields。
其他选项是构建一个字符串,如:
string value = "1" + "#" + "Mat1" + "#" + "11";
所以稍后您可以使用以下方法拆分它:
string MatId = value.Split('#')[0];
string MatName = value.Split('#')[1];
string MatGroupId = value.Split('#')[2];
答案 1 :(得分:1)
最简单的解决方案是:
在Value属性中填充多个列由|分隔(管道)强>
string SQL="SELECT ID +' | '+ Field3 as ValField, Field2 as DispField FROM Table1";
ddl.DataSource = GetDataTable(SQL);
ddl.DataTextField = "DispField";
ddl.DataValueField = "ValueField";
ddl.DataBind();
现在处理回发值
string[] values = ddl.SelectedValue.Split('|');
Response.Write ( values[0] );
Response.Write ( values[1] );