【问题标题】:How to validate gridview when Clicking on Save button?单击“保存”按钮时如何验证gridview?
【发布时间】:2011-11-04 21:12:51
【问题描述】:

我有一个包含保存图像按钮的表单中的网格视图。我想创建一个客户端 CustomValidator 来检查网格是否为空。如果它是空的,那么我想向用户抛出一条错误消息。

这是我的代码。在“Save_btn_Click”事件中,我检查页面是否有效:

 <asp:GridView ID="MyGridView" runat="server" 
                      AutoGenerateColumns="False" 
                      OnRowCancelingEdit="gridView_RowCancelingEdit"
                      OnRowCommand="gridView_RowCommand" 
                      OnRowDataBound="gridView_RowDataBound" 
                      OnRowEditing="gridView_RowEditing"
                      OnRowUpdating="gridView_RowUpdating" 
 >....</GridView>

<asp:CustomValidator id="cvFabricCollection" runat="server"                                                 
ErrorMessage="Please enter at least one row"
ControlToValidate="gridView"
ValidationGroup="MyGroup"
ClientValidationFunction ="ValidateGrid">
</asp:CustomValidator>

<asp:ImageButton ID="Save_btn" 
ImageUrl="images/save.gif"
runat="server"
CausesValidation="True" 
ValidationGroup="MyGroup"
OnClick="Save_btn_Click"/>

Javascript:

function ValidateGrid(sender, args)
{
    var rowscount = document.getElementByID(<%=MyGridView.ClientID%>).rows.length;
    alert(rowscount);
    if(rowscount <= 1)
    {
        args.IsValid = false;
        return;
    }
    args.IsValid = true;
}                 

关于我做错了什么有什么想法吗?

谢谢!

【问题讨论】:

    标签: javascript asp.net gridview customvalidator client-side-validation


    【解决方案1】:

    使用下面的代码行来获取gridview的行数:

    var rowscount = document.getElementByID(<%=Gridview1.ClientID%>).rows.length;
    if(rowcount >0)
    {
       alert("your message");
    }
    

    参考: ASP.NET GridView row count using Javascript

    How to count the rows in a gridview in asp.net using jQuery

    【讨论】:

    • 我使用您提供的代码更新了我的 JavaScript(查看原始帖子),但它仍然无法正常工作......当我调试代码时,我注意到它首先进入了我的“Save_btn_Click”函数,然后到“ValidateGrid”函数,但它似乎没有做任何事情,因为我没有收到任何警报消息......有什么想法吗?谢谢
    • @Joe S:请尝试一下:创建一个不带参数的单独 javascript 函数,将 rowcount 代码放入其中并从您的 SAVEBUTTON 的 onClientClick 事件中调用它。
    【解决方案2】:
    function PassengerGrid(source, args) {
        var Grid1 = document.getElementById("<%=GridviewPassenger.ClientID%>");
        if (Grid1 == null) {
            args.IsValid = false;
        }
        else if (Grid1.rows.length <= 0)
        {
            args.IsValid = false;
        }
        else {
            args.IsValid = true;
        }
    }
    

    【讨论】:

    • 您应该在答案中添加描述,而不仅仅是发布代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多