【问题标题】:Gridview: Validate that SelectedIndex > -1Gridview:验证 SelectedIndex > -1
【发布时间】:2009-04-29 03:33:49
【问题描述】:

我目前有一个Gridview,并且我想使用客户端验证来确保选择了一行(即:SelectedIndex > -1)。

目前我正在使用<asp:CustomValidator>,但想摆脱服务器端验证。这是我目前正在做的事情:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField HeaderText="MSN" DataField="MSN" />
        <asp:CommandField ShowSelectButton="True" />
    </Columns>
</asp:GridView>
<asp:CustomValidator ID="cvSelected" runat="server" ErrorMessage="Please select!" />

然后在代码后面(.cs):

Private Sub cvSelected_ServerValidate(ByVal source As Object, ByVal args As _
System.Web.UI.WebControls.ServerValidateEventArgs) Handles cvSelected.ServerValidate
    args.IsValid = (GridView1.SelectedIndex > -1)
End Sub

【问题讨论】:

    标签: asp.net validation gridview


    【解决方案1】:

    这对我来说似乎没问题。在这种特定情况下,客户端验证听起来有点模糊,比如可能检查您希望拥有服务器生成 ID 的一部分的某些元素。非常脆弱。

    通常我会多走一步,创建自己的验证器控件,该控件继承自BaseValidator。使封装和 SoC 更清洁,并且验证逻辑也可移植。

    【讨论】:

      【解决方案2】:

      在页面后面代码的 GridView_RowCreated() 事件中,您可以像这样向行标签添加属性:

      e.Row.Attributes.Add("onclick", "SetRowSelected();");
      

      然后您需要在您的页面中包含 javascript 函数“SetRowSelected()”,并让它设置一个隐藏字段(例如名为 IsRowSelected)的值,例如“true”。

      然后您可以将另一个 javascript 函数添加到用于提交页面的控件的“onclick”事件中 - 并让它检查隐藏控件的值。如果不正确,只需向用户显示一个 alert() - 否则提交页面。

      这听起来可行吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-14
        • 1970-01-01
        • 2012-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        相关资源
        最近更新 更多