ASP.NET 中的每个 ListItem 都有一个 value 属性和一个 text 属性。我还需要保存第三个值。我的技巧是将特殊分隔符和第三个值连接到 Value 属性。但是使用 FindByValue 方法会很麻烦。
有没有更好的方法来保存第三个值或使用 FindByValue 的好方法。(我不能使用 FindByText)。我希望有一个标签属性。
ASP.NET 中的每个 ListItem 都有一个 value 属性和一个 text 属性。我还需要保存第三个值。我的技巧是将特殊分隔符和第三个值连接到 Value 属性。但是使用 FindByValue 方法会很麻烦。
有没有更好的方法来保存第三个值或使用 FindByValue 的好方法。(我不能使用 FindByText)。我希望有一个标签属性。
如果您使用的是用and属性DropDownList
定义的 bind ,那么将第三个值保存在自身上并不是一个好方法。你可以单独保存它。DataTextField
DataValueField
DropDownList
如果您DropDownList
通过标记定义您的,您可以尝试将其定义为自定义属性:
<asp:DropDownList ID="ddlDummy" runat="server">
<asp:ListItem Text="x" Value="y" ThirdValue="z" />
</asp:DropDownList>
为了检索它,您可以使用 FindByValue 并ThirdValue
从 ListItem 中获取属性:
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);
}
}
如果这是你的情况,你可以看看这个问题,它可以解决问题: