1

我正在研究一个有 RadListView (Telerik) 的 ASP.NET。在每个 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>

任何帮助(甚至是教程的链接)都非常感谢

在此先感谢,丹尼尔

4

1 回答 1

2

为了执行第一步,您可以遵循您在上面的代码中发布的想法(所选 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;

如您所见,您必须通过控件的 Items 集合访问特定的 RadListView 项。一旦你有了你感兴趣的项目,你就可以使用 FindControl() 方法,它将你的控件的 ID 作为一个字符串。

至于验证部分,这是一个可能的实现:

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;
        }
    }

这应该确保在回发时选择“我接受”单选按钮。

于 2011-02-25T20:12:26.060 回答