gpt4 book ai didi

asp.net - DropDownList 烦恼 : same value won't trigger event

转载 作者:行者123 更新时间:2023-12-02 02:03:37 24 4
gpt4 key购买 nike

我用不同的文本属性填充了一个下拉列表控件,但每个文本属性都有相同的值(文本属性是A,值属性是blah,文本属性是B,值属性是blahblah,等等...)

ASP.net 仅检查回发时的值属性,因为所有值都是相同的(对于测试原因)发生了这个小烦人的行为。有解决办法吗?这是否意味着您永远不能拥有相同的值?

最佳答案

听起来您正在处理错误的事件。试试SelectedIndexChanged .

确保您还拥有 AutoPostBack属性设置为True .

已解决

好吧,因为我很好奇,所以我开始研究这个:)

使用非唯一值进行数据绑定(bind)时存在“问题”。

因此,首先,我为自己的不同言论公开道歉。

复制:

ASPX

    <asp:DropDownList ID="myDDL" runat="server" AutoPostBack="True">
</asp:DropDownList>
<asp:Label ID="lblSelItem" runat="server"Text="Currently Selected Item: 0"></asp:Label>
<asp:Label ID="lblSelVal" runat="server" Text="Currently Selected Value: X"></asp:Label>

隐藏代码

    List<string> MyData()
{
List<string> rtn = new List<string>();
rtn.Add("I am the same value!");
rtn.Add("I am the same value!");
rtn.Add("I am the same value!");
rtn.Add("I am the same value!2");
return rtn;
}

protected void Page_Init()
{
if (!Page.IsPostBack)
{
// Load the Data for the DDL.
myDDL.DataSource = MyData();
myDDL.DataBind();
}
}

protected void Page_Load(object sender, EventArgs e)
{
// Display the Currently Selected Item/Value.
lblSelItem.Text = "Currently Selected Item: " + myDDL.SelectedIndex.ToString();
lblSelVal.Text = "Currently Selected Value: " + myDDL.SelectedValue;
}

运行,更改 DropDownList 中的值。请注意,不会发生回发。

在查看源代码时,我意识到我们需要为 value 显式设置“<option> ”属性由服务器控件生成的元素,这导致我执行以下操作:

新的代码隐藏

    Dictionary<string, string> MyTwoColData()
{
Dictionary<string, string> rtn = new Dictionary<string, string>();
rtn.Add("1", "I am the same value!");
rtn.Add("2", "I am the same value!");
rtn.Add("3", "I am the same value!");
return rtn;
}

protected void Page_Init()
{
if (!Page.IsPostBack)
{
// Load the Data for the DDL.
Dictionary<string, string> data = MyTwoColData();

foreach (KeyValuePair<string, string> pair in MyTwoColData())
{
myDDL.Items.Add(new ListItem(pair.Value, pair.Key));
}

myDDL.DataBind();
}
}

这会显式地将值设置为“1”、“2”、“3”等,使它们唯一,同时仍然在列表中显示正确的数据。

显然,您可以将其更改为使用单列列表,但只需运行 for 循环并使用 i 的值即可。或其他什么。

至于数据集的良好解决方法,不确定。

实际上,我们会向用户呈现具有完全相同值的选项列表吗?

我个人认为不是,这可能就是这个“问题”尚未得到解决的原因:)

享受吧!

PS:

哦,我还应该补充一下,如果你想使用“修复”中的文本值,请将其更改为 SelectedItem而不是SelectedValue .

关于asp.net - DropDownList 烦恼 : same value won't trigger event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/318926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com