GridView中有一列从数据库带出来的数据,然后有一列摸板列,TextBox,要求在TextBox中输入数字后,把输入的数字和该行从数据库中取出来的数据进行比较大小,比数据库中的数据大则不允许,各位前辈,望指教!

解决方案 »

  1.   

    在你的模板列中加入一个lable用来显示错误信息
    mytbx为模板里的TextBox,AutoPostback设会true
        protected void mytbx_TextChanged(object sender, EventArgs e)
        {
            TextBox tbx=(TextBox)GridView1.Rows[0].FindControl("mytbx");
            Label lbl=(Label)GridView1.Rows[0].FindControl("meslbl");
            //a为你在数据库中读出的数据
            if (Convert.ToInt32(tbx.Text) > a)
                lbl.Text = "错误";
        }
      

  2.   


     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Separator)
            {
                 TextBox txtSum = e.Row.Cells[0].FindControl("txtSum") as TextBox;
                 TextBox txtHiddenSum = e.Row.Cells[0].FindControl("txtHiddenSum ") as TextBox;
                 if(txtSum!=null&&txtHiddenSum !=null)
                 {
                    if(Convert.ToInt32(txtSum.Text)>Convert.ToInt32(txtHiddenSum.Text))
                    {
                       txtSum.Attributes.Add("onblur","if(this.value!="")window.alert('注意:输入的数字不要大于"+txtHiddenSum .Text+");");
                       //Page.ClientScript.RegisterStartupScript(this.GetType(),"msg","<script language='javascript'>window.alert('注意:输入的数字不要大于"+txtHiddenSum .Text+")</script>");
                     }     
                 }
            }
         }
    <asp:GridView ID="GridView2" runat="server">
            <Columns>
            <asp:TemplateField><ItemTemplate><asp:TextBox ID="txtSum" runat="server"></asp:TextBox>>
            <asp:TextBox ID="txtHiddenSum" runat="server" Visible="false" Text='<%# DataBinder.Eval(Container,"DataItem.txtSum") %>'></asp:TextBox></ItemTemplate>
            </asp:TemplateField></Columns>
            </asp:GridView>
      

  3.   

    谢谢上面两位的回答
    telankes2000,试下这个方法