验证GridView_RowUpdating textfields ASP.NET

时间:2016-08-09 05:37:25

标签: c# asp.net gridview

我想在Gridview上编辑一些信息时对我的Gridview进行验证,但我不知道如何。我没有使用简单的方法,我是通过代码(C#)来做的,我不知道如何在我的文本字段上添加验证...

以下是我的一些代码:

protected void gvAdmins_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    DataTable dt = (DataTable)Session["TaskTableA"];

    GridViewRow row = gvAdmins.Rows[e.RowIndex];

    dt.Rows[row.DataItemIndex]["ID"] = ((TextBox)(row.Cells[1].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["H:"] = ((TextBox)(row.Cells[4].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["M:"] = ((TextBox)(row.Cells[5].Controls[0])).Text;
    dt.Rows[row.DataItemIndex][6] = ((TextBox)(row.Cells[7].Controls[0])).Text;
    dt.Rows[row.DataItemIndex][7] = ((TextBox)(row.Cells[8].Controls[0])).Text;
    dt.Rows[row.DataItemIndex][8] = ((TextBox)(row.Cells[9].Controls[0])).Text;
    dt.Rows[row.DataItemIndex][9] = ((TextBox)(row.Cells[10].Controls[0])).Text;
    dt.Rows[row.DataItemIndex][10] = ((TextBox)(row.Cells[11].Controls[0])).Text;

    gvAdmins.EditIndex = -1;

    int id = Convert.ToInt32(Request.QueryString["id"]);
    string idCar = ((TextBox)(row.Cells[1].Controls[0])).Text;
    int hom = Convert.ToInt32(((TextBox)(row.Cells[4].Controls[0])).Text);
    int mu = Convert.ToInt32(((TextBox)(row.Cells[5].Controls[0])).Text);
    int t1 = 0;
    int t2 = 0;
    int t3 = 0;
    int t4 = 0;
    int t5 = 0;
    t1 = Convert.ToInt32(((TextBox)(row.Cells[7].Controls[0])).Text);
    t2 = Convert.ToInt32(((TextBox)(row.Cells[8].Controls[0])).Text);
    t3 = Convert.ToInt32(((TextBox)(row.Cells[9].Controls[0])).Text);
    t4 = Convert.ToInt32(((TextBox)(row.Cells[10].Controls[0])).Text);
    t5 = Convert.ToInt32(((TextBox)(row.Cells[11].Controls[0])).Text);

    int total = hom + mu;
    int totalT = t1 + t2 + t3 + t4 + t5;

    string comandoIF = //MY SQL Command;

    conn.IAE(comandoIF);

    dt.Rows[row.DataItemIndex]["Total:"] = total.ToString();

    BindDataA();
}

我希望你能帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您应该将文本框或gvAdmins_RowUpdating中正在处理的其他元素的内容放入变量并验证这些内容。

对于字符串,您可以这样做:

    string H = ((TextBox)(row.Cells[4].Controls[0])).Text;
    if (H == "correctValue")
    {
        dt.Rows[row.DataItemIndex]["H:"] = H;
    }
    else
    {
        //the input was not correct
    }

对于需要转换为整数,日期,布尔值等的值,您可以执行以下操作。您必须转换TextBox中的值(它始终是一个字符串)。

    int ID = Convert.ToInt32(((TextBox)(row.Cells[1].Controls[0])).Text);
    if (ID > 500 && ID < 600)
    {
        dt.Rows[row.DataItemIndex]["ID"] = ID;
    }
    else
    {
        //the input was not correct
    }

但是有一个问题,如果TextBox中的值无法转换为整数,则代码将抛出错误。为了防止您使用Try-Catch Block:

    int ID = -1;
    //try the conversion in a try-catch block. If conversion fails your site won't trow an error
    try
    {
        ID = Convert.ToInt32(((TextBox)(row.Cells[1].Controls[0])).Text);
    }
    catch
    {
        //error converting to integer, but will continue
    }

    //after that do the validating
    if (ID > 500 && ID < 600)
    {
        dt.Rows[row.DataItemIndex]["ID"] = ID;
    }
    else
    {
        //the input was not correct
    }

请注意,以上示例非常基本。如果您愿意,可以使验证非常复杂和严格。您应该在获取数据库中可用的验证数据和用户体验等之间找到平衡。

我还建议您也使用验证器形式的客户端验证。这些链接可以帮助您开始:

https://msdn.microsoft.com/en-us/library/ms972961.aspx

https://msdn.microsoft.com/en-us/library/a0z2h4sw.aspx