Непредвиденное срабатывание события radiobuttonlist selectedindexchanged

У меня есть 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, и если выбранный элемент изменяется, то более позднее нажатие кнопки изображения вызывает событие selectedinexchanged radiobuttonlist..
почему это происходит, я не ожидаю, что это вызовет это событие..


person spiral    schedule 07.04.2013    source источник
comment
вопрос слишком расплывчатый, чтобы понять? пожалуйста, будьте немного более конкретным.   -  person Praveen Nambiar    schedule 07.04.2013
comment
на самом деле проблема заключается в программном изменении выбранного элемента. как эффективно изменить свойство radiobuttonlist.items[].selected? когда он запускает событие selectedindexchanged?   -  person spiral    schedule 07.04.2013


Ответы (2)


Я не совсем уверен, чего вы пытаетесь достичь. Но похоже, вам нужно обработать некоторую логику в событии OnSelectedIndexChanged вашего RadioButtonList

Сначала установите свойство AutoPostBack="true" на свой 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  
}  
person Praveen Nambiar    schedule 07.04.2013
comment
КОГДА Я ИЗМЕНЯЮ SELECTED=TRUE PROPETY, ТОГДА ПРИ НАЖАТИИ ДРУГИХ КНОПОК, КОТОРЫЕ ОТПРАВЛЯЮТ НА СЕРВЕР, ЗАПУСКАЕТ ЭТО СОБЫТИЕ... - person spiral; 07.04.2013
comment
Проверьте мой собственный ответ выше и скажите мне, как именно состояние просмотра делает этот трюк? Я до сих пор не уверен, что именно было не так - person spiral; 07.04.2013

На самом деле проблема заключалась в том, что я декларативно инициализировал элементы на странице 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.. :)

person spiral    schedule 07.04.2013