Вопрос

Мой сайт имеет управление изменением языка, поэтому, когда нажал язык, я перезагружаю той же страницы, но с другим языком текста, и если пользователь уже имеет поле в форме, я должен перезагрузить данные.

Мне удалось перезагрузить данные в флажки, TextBox, но не с Radio Botton

Пожалуйста, смотрите мой код

У меня есть DataList и переключатель внутри.

<asp:DataList runat="server" ID="dlRole">
                <ItemTemplate>
                    <input type="radio" id="rblRole" name="rblRole" value='<%# Eval("RoleCode") %>' />                      
                    <asp:Label ID="lbRole" runat="server" Text='<%# Eval("Description")%>'></asp:Label>
                </ItemTemplate>
            </asp:DataList>
.

Я загружаю DataList, радио кнопки

dlRole.DataSource = ...
dlRole.DataBind();
.

Я сохраняю значение радиопередачи в объект сеанса пользователя

 user.Role = Request["rblRole"];
.

Но когда я перезагружаю сохраненного объекта в радиопередачу, он не может найти контроль объекта радиоуправления .... Переключатель всегда нулевой.И я не уверен, почему

        foreach (DataListItem item in dlRole.Items)
        {
            HtmlInputRadioButton radio = (item.FindControl("rblRole") as HtmlInputRadioButton);                
            if (radio != null) <--- always nulll
            {
                if (radio.Value == user.Role.ToString())
                {
                  radio.Checked = true;
                }
                else
                  radio.Checked = false;
            }
        }
.

Пожалуйста, дайте мне знать, как исправить это Спасибо

Это было полезно?

Решение

Вам нужно добавить

runat="server" 
.

на вашей кнопке радио, в противном случае она не будет доступна из кода позади.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top