【问题标题】:radiobuttonlist selectedindexchanged event firing unexpected单选按钮列表 selectedindexchanged 事件触发意外
【发布时间】:2013-03-29 12:36:12
【问题描述】:

我有一个radiobuttonlist 我更改了codebehid 中的选定项

private void DisplayPrivacyTerms(long ImageId)
{
    if (ImageryDataAccess.GetImagePrivacyTerm(ImageId).ToLower() == "me only")
    {
        RadioButtonListPrivacy.Items[0].Selected = true;
    }
    if (ImageryDataAccess.GetImagePrivacyTerm(ImageId).ToLower() == "friends")
    {
        RadioButtonListPrivacy.Items[1].Selected = true;
    }
    if (ImageryDataAccess.GetImagePrivacyTerm(ImageId).ToLower() == "public")
    {
        RadioButtonListPrivacy.Items[2].Selected = true;
    }
}

当所选项目更改上述方式时,稍后postback服务器触发selectedindexchanged事件。

特别是我有listview,它显示imagebuttons。当我单击listview 中的图像按钮时,如果更改了所选项目,则稍后单击图像按钮会触发radiobuttonlistselectedinexchanged 事件..
为什么会发生这种情况我不希望这会触发这个事件..

【问题讨论】:

  • 问题太模糊,无法理解?请具体一点。
  • 实际上问题在于以编程方式更改所选项目。如何有效地更改 radiobuttonlist.items[].selected 属性?什么时候触发 selectedindexchanged 事件?

标签: asp.net events viewstate init radiobuttonlist


【解决方案1】:

实际上问题是我已经在 aspx 页面中以声明方式初始化了这些项目。我把有问题的函数改成如下代码

    private void DisplayPrivacyTerms(long ImageId)
      {
    RadioButtonListPrivacy.Items.Clear();
    ListItem itemMe= new ListItem("Me Only", "1");
    RadioButtonListPrivacy.Items.Add(itemMe);
    ListItem itemMates = new ListItem("Subject Mates", "2");
    RadioButtonListPrivacy.Items.Add(itemMates);
    ListItem itemPublic = new ListItem("Public", "3");
    RadioButtonListPrivacy.Items.Add(itemPublic);

    if (ImageryDataAccess.GetImagePrivacyTerm(ImageId).ToLower() == "me only")
    {
        RadioButtonListPrivacy.Items[0].Selected = true;
    }
    if (ImageryDataAccess.GetImagePrivacyTerm(ImageId).ToLower() == "subject mates")
    {
        RadioButtonListPrivacy.Items[1].Selected = true;
    }
    if (ImageryDataAccess.GetImagePrivacyTerm(ImageId).ToLower() == "public")
    {
        RadioButtonListPrivacy.Items[2].Selected = true;
    }

}

我清除了列表,然后添加了新条目,这样它清除了仅更改 Select=true 属性时出现的视图状态问题.. :)

【讨论】:

    【解决方案2】:

    我不完全确定您要达到的目标。但似乎你需要处理你的RadioButtonListOnSelectedIndexChanged 事件的一些逻辑

    首先在您的RadioButtonList 上设置AutoPostBack="true" 属性

    然后在OnSelectedIndexChanged 事件上,写下你的逻辑。

    protected void RadioButtonListPrivacy_SelectedIndexChanged(object sender, System.EventArgs e)  
    {  
       // your logic here
       // so basically when you click on any of the items in your radiobuttonlist,
       // this event will fire and you can write your logic based on it  
    }  
    

    【讨论】:

    • 当我更改 SELECTED=TRUE 属性然后单击其他回发到服务器的按钮会触发此事件...
    • 检查我自己的答案并告诉我视图状态是如何做到这一点的?我仍然不确定到底出了什么问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    相关资源
    最近更新 更多