我这里做了一个表单,类似报表的,里面有很多TextBox框,按照用户的需求TextBox可以为空,但最后不能让他提交空表(注:1、报表中基本都为TextBox;2、每次提交都会有创建时间写入数据库,这些TextBox框中内容是分批次写入数据库)
如何做到判断提交时不为空表。

解决方案 »

  1.   


    foreach(Control ctl in this.Controls[1].Controls)
    {
     if(ctl.GetType().Name=="TextBox")
     {
      TextBox tb =new TextBox();
      tb=(TextBox)this.FindControl(ctl.ID);
      
      if(tb.Text==string.Empty)
      {
       Response.Write("<script>alert('" + ctl.ID + "的值为空。');</script>");
       break;
      }
     }
    }遍历控件里面的TextBox是否有一个为空
      

  2.   

    你保存的时候,怎么获取TextBox值,就怎么判断是否为空。
      

  3.   


    正如我先前说的,用户可以选择每个TextBox是否需要填写
      

  4.   

      function vail(v)
      {
         if(v.value==null)
           {
              alert('不能为空!');
           }
           //继续后面的操作
      }
      <input type="text" value="sss" onclick="vail(this)">
      

  5.   

    如果你的意思是这样比如一个表单里面有下面2个文本框姓名:textbox
    昵称:textbox  删除这项
    你想让用户选择是否填写昵称,那么就在像上面那样在后门增加一个选框,如果用户删除了这项,那么自然表单里面就没这项了
      

  6.   


    不好意思,我要表达的意思是每个TextBox都有为空和不为空两种情况,但是如果提交一份空的表单就有点浪费资源
      

  7.   


    我做的是一个报表,和Excel一样,我要判断的是内容
      

  8.   

    这里是我根据一楼提示写的代码,如果有简单的,可以交流一下,谢谢各位参与
    StringBuilder str = new StringBuilder();
            StringBuilder str2 = new StringBuilder();
            str2.Append("0000000000");
            foreach (Control ctl in this.form1.Controls)
            {
                if (ctl.GetType().Name == "TextBox")
                {
                    TextBox tb = new TextBox();
                    tb = (TextBox)this.FindControl(ctl.ID);                if (tb.Text == string.Empty)
                    {
                        str.Append(0);
                    }
                    else
                    {
                        str.Append(1);
                    }
                }
            }
            if (str.Equals(str2))
            {
                Response.Write("<script>alert('空表。');</script>");
            }
            else
                Response.Write("<script>alert('成功。');</script>");
      

  9.   

    <html>
    <table>
    </table>
    </html>
      

  10.   

    两点建议
    if (ctl.GetType().Name == "TextBox")建议改成
    if(ctl.GetType()==typeof(TextBox))TextBox tb = new TextBox();
    tb = (TextBox)this.FindControl(ctl.ID);
    if (tb.Text == string.Empty)建议改成
    Control ctrl = this.FindControl(ctl.ID);
    if(ctrl != null)
    {
       TextBox tb = ctrl as TextBox;
       if(String.IsEmptyOrNull(tb.Text))
       {}
    }
      

  11.   

      <center>
       <table width="95%" border="0" cellspacing="0" cellpadding="0" style="border:2px #DBD8FE solid;" >
        <tr>
        <td>
                 <center>
          <div>
              <asp:Repeater ID="theData" runat="server" OnItemCommand = "R_ItemCommand">
              <HeaderTemplate>
                    <table width="90%"  frame =below    rules=rows style=" height: 72px;border:1px #CDEFFC  ;">
                                   <tr>
                    
                    <td colspan =4 align =left style="background-color: #ECECFF; font-size: large; font-weight: bold;">
                       
                            &nbsp;&nbsp;&nbsp;&nbsp;板块列表
                      
                    </td>
                </tr>
              </HeaderTemplate>
              <ItemTemplate>
           
      

  12.   

    (laolaolai) 
    第一点建议接收,是我一直都没注意过这点
    求第二点建议详解:if(ctrl != null)
      

  13.   

    1、
    (TextBox)this.FindControl(ctl.ID);
    问题在于:this.FindControl(ctl.ID);为空时
    相当于(TextBox)null,显然会导致异常。2、if(tb.Text == string.Empty)判断并不完整
       对null并未作出判断。
       所以建议用String.IsNullOrEmpty方法。你可以通过reflactor看一下IsNullOrEmpty的代码,个人感觉思路很好。
      

  14.   

    (laolaolai)谢谢你的建议及详解