Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 我是否可以使用SelectedIndex而不是SelectedValue保存DropDownList的状态?_Asp.net_Webforms - Fatal编程技术网

Asp.net 我是否可以使用SelectedIndex而不是SelectedValue保存DropDownList的状态?

Asp.net 我是否可以使用SelectedIndex而不是SelectedValue保存DropDownList的状态?,asp.net,webforms,Asp.net,Webforms,我的DropDownList由最终用户动态填充。但是,有时,两个或多个项目可能具有相同的值。例如: <asp:DropDownList runat="server" ID="ddl" AutoPostBack="true"> <asp:ListItem Text="Item 1" Value="Item 1" /> <asp:ListItem Text="Item 2" Value="Item 2" /> <asp:ListIte

我的DropDownList由最终用户动态填充。但是,有时,两个或多个项目可能具有相同的值。例如:

<asp:DropDownList runat="server" ID="ddl" AutoPostBack="true">
    <asp:ListItem Text="Item 1" Value="Item 1" />
    <asp:ListItem Text="Item 2" Value="Item 2" />
    <asp:ListItem Text="Item 3" Value="Item 2" />
</asp:DropDownList>

您可以为每个项目添加自定义属性,在其中存储实际值,并在代码隐藏中检索它。然后可以为所有项目(例如索引)将
属性设置为不同的值:


在代码示例中,
文本
属性是相同的。在您的生产代码中是这样吗?我很确定不是,但我只是想确定…不,不是这样的。你说得对。在实际的应用程序中,文本和值是不同的。你能在添加项目的地方发布相关代码吗(并说在哪个事件处理程序中添加项目)?是的,我可以,但实际上,即使DropDownList是静态的,问题也很容易重现。我将在github上发布一个示例项目,并将返回此处发布链接。我将使用我的建议的第一个版本(在标记中有效)添加一个答案。如果这个想法适合您的需要,我将在以后使用代码隐藏添加解决方案对其进行编辑。我找到了做这件事的方法。
<asp:DropDownList runat="server" ID="ddl" AutoPostBack="true">
    <asp:ListItem Text="Item 1" Value="1" Tag="Value1" />
    <asp:ListItem Text="Item 2" Value="2" Tag="Value2" />
    <asp:ListItem Text="Item 3" Value="3" Tag="Value2"/>
</asp:DropDownList>
string actualSelectedValue = ddl.SelectedItem.Attributes["Tag"];