将3个值绑定到下拉列表

时间:2013-04-25 05:28:07

标签: c# asp.net

我有一个下拉列表,该列表绑定到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,因为用户每次都选择下拉值

2 个答案:

答案 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] );