我想在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();
}
我希望你能帮助我,谢谢。
答案 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
}
请注意,以上示例非常基本。如果您愿意,可以使验证非常复杂和严格。您应该在获取数据库中可用的验证数据和用户体验等之间找到平衡。
我还建议您也使用验证器形式的客户端验证。这些链接可以帮助您开始: