2013-04-25 49 views
3

我具有被綁定到DataTable如下下拉列表:結合3個值到下拉列表

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,因爲用戶每次選擇下拉值

回答

1

爲Mat創建一個類(也包括MatGroupId和MatId),因此您可以將該類的唯一ID保存爲DataValue,稍後您將從獨特的ID中取出課程,然後將所有存儲的數據存入課程中,因爲您無法存儲多個DataValueField。

另一個選項是建立一個字符串,像這樣:

string value = "1" + "#" + "Mat1" + "#" + "11"; 

所以以後你可以用把它分解:

string MatId = value.Split('#')[0]; 
string MatName = value.Split('#')[1]; 
string MatGroupId = value.Split('#')[2]; 
+0

處理的值所以我應該使用datavaluefield作爲新的列是名稱#GROUPID的組合。但如果名稱包含散列標籤呢? – Eve 2013-04-25 05:44:45

+0

您可以使用可以存儲在字符串中的其他每個字符。你也可以使用多個字符,如「## %% &&」,我不認爲你的名字會包含這樣的字符串。否則我會建議創建類,那麼你不會有這個問題。 – Postback 2013-04-25 05:46:33

1

最簡單的解決方法是:

填充值屬性中的多個列用|分隔(管道)

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