ASP.NET,Telerik RadListView,RadioButtonList和CustomValidator问题

时间:2011-02-24 17:14:19

标签: asp.net listview telerik radiobuttonlist customvalidator

我正在开发一个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>

任何帮助(甚至指向教程的链接)都是apreciated

提前致谢, 丹尼尔

1 个答案:

答案 0 :(得分: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;
        }
    }

这应该照顾所有确保在PostBack上选择“我接受”RadioButton。