2013-02-20 23 views
2

ASP.NET中的每個ListItem都有一個值屬性和一個文本屬性。我還需要保存第三個值。我的破解是連接一個特殊的分隔符和Value屬性的第三個值。 但是使用FindByValue方法使得這個麻煩。如何在ASP.NET下拉列表的每個ListItem中保存第三個值?

有沒有更好的方法來保存第三個值或使用FindByValue的好方法。 (我不能使用FindByText)。我希望有一個標籤屬性。

回答

3

如果您使用的是綁定DropDownList,與DataTextFieldDataValueField性質界定,有沒有真正節省了DropDownList本身第三值的好方法。你可以單獨保存它。

如果你通過標記定義你DropDownList,你可以嘗試將其定義爲一個自定義屬性:

<asp:DropDownList ID="ddlDummy" runat="server"> 
    <asp:ListItem Text="x" Value="y" ThirdValue="z" /> 
</asp:DropDownList> 

要檢索它,你可以使用FindByValue從列表項獲得ThirdValue屬性:

ListItem item = ddlDummy.Items.FindByValue("y"); 
string value = item.Attributes["ThirdValue"]; 

然而,古怪,如果你動態生成的項目,該屬性不會持久:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     ListItem item = new ListItem("x", "y"); 
     item.Attributes.Add("ThirdValue", "z"); 
     ddlDummy.Items.Add(item); 
    } 
} 

如果您遇到這種情況,你可以看看這個問題,給出了一個工作以防萬一:

ListItems attributes in a DropDownList are lost on postback?

相關問題