问题如标题,我的gridview中,在使用内置的编辑功能时,有一列是必须要输入数字的,且所有列都必须不能输入空,如果不满足要求,要弹出对话框提示输入错误,,确认后返回页面重新输入,请问是不是要在gridview或者sqldatasource里的rowupdating事件里写代码?请问如何写,谢谢了!

解决方案 »

  1.   

    在事件中取到每个控件填的数据,看是否满足既定的约束。
    取控件用FindControl
      

  2.   

    <asp:TextBox id="txtA" CssClass="inputText"  MaxLength="100" runat="server" Text='<%# Eval("A") %>' Width="86%">
    </asp:TextBox>
     <asp:RequiredFieldValidator ID="rfv" runat="server" ErrorMessage="*" ControlToValidate="txtA"></asp:RequiredFieldValidator>

    验证控件判断数字
      

  3.   

    将GridView的列改成模板列,这样就可以加验证倥件或用js来验证!!
      

  4.   

    因为我要判断所有的列都不能为空,那么按照wuyq11和koukoujiayi的意思,要把gridview所有的列都转为模板列,然后每个加上验证控件?是不是太麻烦了,请问有没有其它方法?在rowupdating能不能搞定?
      

  5.   

    简单点加验证控件,如非空验证就是加RequiredFieldValidator控件!不需要编写代码!
    步骤:
    1.进入某一列的模板列,
    2.在EditItemTemplate区拖入RequiredFieldValidator控件,(也即在TextBox框旁边)
    3.点中RequiredFieldValidator控件,在属性面板中设置:
    一,Errmasage设置为"不能为空"
    二,Text设置为*
    三,ControlValitade设置为TextBox框的ID,如TextBox1
    大致就可以了!!
      

  6.   

    在页面的任何位置拖入ValidationSummary控件,
    设置:ShowMessageBox为true
    设置:ShowSummary为false
    就会弹出框!!
      

  7.   

    在RowUpdating事件里写是可以的
    例如:
    先获取要编辑行的数据
    TextBox name = ((TextBox)QueryGrid.Rows[QueryGrid.EditIndex].Cells[1].Controls[0]);
    然后进行验证
    if(name.Text.Trim()=="")
    {
       Response.Write("<script>alert('名称不能为空!')</script>");
    }
      

  8.   

    我用了ValidationSummary试过了,确实可以弹出窗口显示错误信息,但是在原页面,RequiredFieldValidator也同时显示了一遍错误,这样看上去,好像显得多余,能不能让ValidationSummary弹出窗口显示而不让RequiredFieldValidator显示?
      

  9.   

    是不是对不同的控件验证分别显示?
    如果要分别弹出ValidationSummary,拖入多个ValidationSummary控件,
    然后分组!
    每个控件都有ValidationGroup属性,设置这个属性!相同的为一组!