Asp.net radiobuttonlist selectedindexchanged事件触发意外

Asp.net radiobuttonlist selectedindexchanged事件触发意外,asp.net,events,viewstate,init,radiobuttonlist,Asp.net,Events,Viewstate,Init,Radiobuttonlist,我有一个radiobuttonlist我在codebehid private void DisplayPrivacyTerms(long ImageId) { if (ImageryDataAccess.GetImagePrivacyTerm(ImageId).ToLower() == "me only") { RadioButtonListPrivacy.Items[0].Selected = true; } if (ImageryDataAcc

我有一个
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
事件。
特别是我有
列表视图
,它显示
图像按钮
。当我在
列表视图中单击imagebutton
时,如果所选项目已更改,则稍后单击imagebutton将触发
RadioButton列表的
SelectedInterchanged
事件。

为什么会发生这种情况?我不认为这会触发这一事件。

我不完全确定您想要实现什么。但是您似乎需要处理
RadioButtonList
OnSelectedIndexChanged
事件的一些逻辑

首先在
RadioButtonList

然后在
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  
}  

实际上,问题是我在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属性时出现的viewstate问题:)

这个问题太含糊而无法理解?请说得具体一点。实际上,问题是以编程方式更改所选项目。如何有效地更改radiobuttonlist.items[]所选属性?当它触发selectedindexchanged事件时?当我更改selectedindexchanged属性时,然后单击其他按钮,POSTSBACK TO SERVER会触发此事件…请检查上面我自己的答案,并确切地告诉我viewstate是如何完成此操作的?我仍然不确定到底出了什么问题