Как получить доступ к radiobuttonlist usercontrol из файла aspx.cs

#c# #asp.net #ascx

#c# #asp.net #ascx

Вопрос:

У меня не получается получить выбранное значение элемента управления radiobuttonlist из файла aspx.cs. Элемент управления radiobuttonlist находится внутри файла .ascx. Я продолжаю получать ссылку на объект System.NullReferenceException, не установленную для экземпляра объекта.

Есть идеи?

Я несколько раз пытался использовать метод FindControl, меняя его, так как он терпел неудачу. Вот последнее, что я пробовал:

 protected void ClientsDropDownList_Selected(object sender, EventArgs e)
    {
        this.ConsultationFormControl.LoadClient(int.Parse(ClientsDropDownList.SelectedValue));    

            if (ClientsDropDownList.SelectedValue != "Please Select One")
            {
                UserControl US = FindControl("ConsultationFormControl") as UserControl;
                RadioButtonList rblMarStat = US.FindControl("rblMaritalStatus") as RadioButtonList;
                if (rblMarStat.SelectedValue == "Married")
                {
                    Response.Write("perfect");
                }
            }            
    }
  

Надеюсь, это поможет.

Джеймс

Хорошо, ребята, спасибо за вашу помощь. Похоже, у нас все получилось. Еще раз спасибо, AVD. Я помню, как в прошлом создавал общедоступное свойство для нескольких вещей. Я просто не мог думать сегодня вечером после всего этого кодирования без перерыва, и уже поздно. Это очень помогло. Мир, брат. Мирные ребята.

Комментарии:

1. Покажите нам свой подход, включая. часть, в которой вы получаете NullReferenceException .

2. dotnetcurry.com/ShowArticle.aspx?ID=155

3. Я пытался использовать метод FindControl . Я сильно изменил его, пытаясь заставить его работать. Это последнее, что я пробовал, когда пришел сюда, за исключением:

Ответ №1:

Вы можете определить public свойство / метод в пользовательском элементе управления, который возвращает selected значение.

Редактировать:

Добавьте следующее свойство в код пользовательского элемента управления,

 public string SelectedValue
{
    get
    {
        return RadioButtonList1.SelectedValue;
    }
}
  

Для доступа к свойству SelectedValue со страницы .aspx,

 string value=YourControlID1.SelectedValue;
  

ИЛИ используйте метод FindControl,

  RadioButtonList rad = (RadioButtonList)YourControlID1.FindControl("RadioButtonList1");
 Response.Write(rad.SelectedValue);
  

Комментарии:

1. У меня умер мозг, и мне нужно будет сделать это завтра. Не могли бы вы привести мне пример в коде, чтобы мне было проще, Братан… На всякий случай

2. Чувак, спасибо, братан. Я кодировал часами без остановки и просто больше не мог думать. Это была отличная помощь!

3. Эй, второй ответ, который вы мне дали, — это в значительной степени то, что я пробовал в различных формах. Я просто закодировал его так, как у вас здесь (за исключением переименования элементов управления в соответствии с потребностями, конечно), и это дало мне то же исключение с нулевой ссылкой. Но создание общедоступного свойства работало безупречно. 🙂

4. @JamesKhouriDevJunkie — Да! Общедоступная собственность — лучший вариант.

Ответ №2:

Вы можете получить доступ к RadioButtonList с помощью,
RadioButtonList rlist = (RadioButtonList)UserControlName .FindControl(«RadioButtonList1»); строка str = rlist.Выбранное значение;