Проблемы ASP.NET, Telerik RadListView, RadioButtonList и CustomValidator - PullRequest
1 голос
/ 24 февраля 2011

Я работаю в ASP.NET, где у меня есть RadListView (Telerik).Внутри каждого элемента RadListView есть RadioButtonList с двумя переключателями.Что мне нужно сделать:

  • при первой загрузке страницы, по умолчанию должна быть выбрана одна из двух радиокнопок;
  • при обратной передаче. Я должен убедиться, чтопользователь выбрал другой (пытается сделать это с помощью CustomValidator);
  • при обратной записи. Я должен сохранить статус RadioButtonLists.

Любая идея о том, как я могусделать это?

Вот часть моего кода:

<telerik:RadListView ID="rlvContracts" runat="server">
        <ItemTemplate>
            <fieldset style="margin-bottom: 30px;">
                    <table cellpadding="0" cellspacing="0">
                           [...]
                              <asp:RadioButtonList runat="server" EnableViewState="true" ID="rblContract" RepeatDirection="Horizontal">
                              <asp:ListItem Value="1" Text="Accept"></asp:ListItem>
                              <asp:ListItem Value="0" Text="I do not accept" Selected="True"></asp:ListItem>
                              </asp:RadioButtonList>
                           [...]
                              <!-- Custom Validator Here -->
                           [...]
                    </table>
                </fieldset>
        </ItemTemplate>
    </telerik:RadListView>

Любая помощь (даже ссылки на учебники) приветствуется

Заранее спасибо, Даниэле

1 Ответ

2 голосов
/ 25 февраля 2011

Для того, чтобы сделать первый шаг, вы можете либо следовать идее, которую вы разместили в своем коде выше (декларативная настройка выбранного RadioButton), либо программно установить его, выполнив что-то вроде следующего:

//MyRadListView is the name of the RadListView on the page
RadListView myListView = MyRadListView;
RadioButtonList myRadioButtonList = myListView.Items[0].FindControl("MyRadioButtonList") as RadioButtonList;
myRadioButtonList.SelectedIndex = 0;

Как видите, вам нужно получить доступ к конкретному элементу RadListView через коллекцию Items элемента управления.Если у вас есть интересующий вас элемент, вы можете просто использовать метод FindControl (), который принимает идентификатор вашего элемента управления в виде строки.

Что касается проверочной части, то это возможная реализация:

ASPX:

        <asp:CustomValidator ID="RadioButtonListValidator" runat="server" ControlToValidate="MyRadioButtonList"
           OnServerValidate="RadioButtonListValidator_ServerValidate"
           ErrorMessage="Please select I Accept">
        </asp:CustomValidator>

C #:

    protected void RadioButtonListValidator_ServerValidate(object sender, ServerValidateEventArgs e)
    {
        RadListView myListView = MyRadListView;
        RadioButtonList myRadioButtonList = myListView.Items[0].FindControl("MyRadioButtonList") as RadioButtonList;
        myRadioButtonList.SelectedIndex = 0;

        if (myRadioButtonList.SelectedValue != "1")
        {
            e.IsValid = false;
        }
    }

Это должно позаботиться о том, чтобы на PostBack была выбрана кнопка «Я принимаю».

...