4

ASP.NET 中的每个 ListItem 都有一个 value 属性和一个 text 属性。我还需要保存第三个值。我的技巧是将特殊分隔符和第三个值连接到 Value 属性。但是使用 FindByValue 方法会很麻烦。

有没有更好的方法来保存第三个值或使用 FindByValue 的好方法。(我不能使用 FindByText)。我希望有一个标签属性。

4

1 回答 1

4

如果您使用的是用and属性DropDownList定义的 bind ,那么将第三个值保存在自身上并不是一个好方法。你可以单独保存它。DataTextFieldDataValueFieldDropDownList

如果您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);
    }
}

如果这是你的情况,你可以看看这个问题,它可以解决问题:

DropDownList 中的 ListItems 属性在回发时丢失?

于 2013-02-20T23:56:33.290 回答