在ASP.NET中为GridView行添加验证

9 浏览
0 Comments

在ASP.NET中为GridView行添加验证

我没有编辑模板。我在编辑模式下的文本框中添加验证规则是可能的吗?

它可以更新编辑后的字段并且工作正常,但是当我输入特殊字符时,它仍然被接受。我该如何验证这些可编辑的文本框并防止用户输入无效的内容?

更新

int prodid = int.Parse(gdview.DataKeys[e.RowIndex].Value.ToString());
string strprodname = ((TextBox)gdview.Rows[e.RowIndex].Cells[0].Controls[0]).Text;
//string strdesc = ((TextBox)gdview.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
string strprice = ((TextBox)gdview.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
//string strimg = ((TextBox)gdview.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
//string strquant = ((TextBox)gdview.Rows[e.RowIndex].Cells[4].Controls[0]).Text;
var regex = new Regex(@"^\d{0,8}(\.\d{1,4})?$");
if (regex.IsMatch(strprice))
{
    SqlConnection conn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True");
    SqlDataAdapter da = new SqlDataAdapter("", conn);
    conn.Open();
    da.UpdateCommand = new SqlCommand("update Products set Name='" + strprodname + "', Price ='" + strprice + "' where ProductID =" + prodid, conn);
    da.UpdateCommand.ExecuteNonQuery();
    conn.Close();
    gdview.EditIndex = -1;
    GetProducts(0);
}

字段没有更新

更新GetProducts(0)

private void GetProducts(int CategoryID)
{
    ShoppingCart k = new ShoppingCart()
    {
        CategoryID = CategoryID
    };
    gdview.DataSource = null;
    gdview.DataSource = k.GetAllProducts();
    gdview.DataBind();
}

数据表:

public DataTable GetAllProducts()
{
    SqlParameter[] parameters = new SqlParameter[1];
    parameters[0] = DataLayer.DataAccess.AddParameter("@CategoryID", CategoryID, System.Data.SqlDbType.Int, 20);
    DataTable dt = DataLayer.DataAccess.ExecuteDTByProcedure("SP_GetAllProducts", parameters);
    return dt;
}

更新:

error on regex

当前代码:

protected void gdview_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    int prodid = int.Parse(gdview.DataKeys[e.RowIndex].Value.ToString());
    string strprodname = ((TextBox)gdview.Rows[e.RowIndex].Cells[0].Controls[0]).Text;
    //string strdesc = ((TextBox)gdview.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
    string strprice = ((TextBox)gdview.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
    //string strimg = ((TextBox)gdview.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
    //string strquant = ((TextBox)gdview.Rows[e.RowIndex].Cells[4].Controls[0]).Text;
    var regex = new Regex(@"^\d{0,8}(\.\d{1,4})?$");
    if (regex.IsMatch(strprodname) && regex.IsMatch(strprice))
    {
        SqlConnection conn = new SqlConnection("Data Source = 'PAULO'; Initial Catalog=ShoppingCartDB;Integrated Security =True");
        SqlDataAdapter da = new SqlDataAdapter("", conn);
        conn.Open();
        da.UpdateCommand = new SqlCommand("update Products set Name='" + strprodname + "', Price ='" + strprice + "' where ProductID =" + prodid, conn);
        da.UpdateCommand.ExecuteNonQuery();
        conn.Close();
        gdview.EditIndex = -1;
    }
    GetProducts(0);
}

0
0 Comments

问题的出现是因为在ASP.NET的GridView控件中,需要对行进行验证。解决方法是在GridView的RowDataBound事件中添加验证逻辑。具体步骤如下:

1. 在GridView的RowDataBound事件中添加以下代码:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        // 添加验证逻辑
    }
}

2. 在验证逻辑中,可以使用以下方法对行进行验证:

if (e.Row.Cells[0].Text == "")
{
    e.Row.BackColor = System.Drawing.Color.Red;
}

3. 在GridView的属性中,将RowDataBound事件与GridView1_RowDataBound方法关联:


...

通过以上步骤,可以在ASP.NET的GridView控件中实现对行的验证。

0
0 Comments

问题原因:在ASP.NET的GridView控件中,没有对行进行验证,导致在插入数据到数据库时可能会出现错误或不符合要求的数据。

解决方法:添加验证功能,使用正则表达式对GridView的行进行验证,确保插入到数据库中的数据符合要求。

具体方法如下:

1. 创建两个正则表达式对象,分别用于验证价格和名称的格式。代码如下:

var regex_valid_price = new Regex(@"^\d{0,8}(\.\d{1,4})?$");

var regex_no_special_chars = new Regex(@"^[a-zA-Z0-9 ]*$");

2. 在GridView的行插入操作中,使用正则表达式对象对要插入的数据进行验证。代码如下:

if(regex_no_special_chars.IsMatch(strprodname) && regex_valid_price.IsMatch(strprice)){

// do your db inserts

}

3. 如果数据符合要求,则执行插入数据库的操作。可以在这里编写插入数据库的代码。

4. 如果数据不符合要求,则不执行插入数据库的操作,可以给出相应的提示或处理方式。

以上就是在ASP.NET的GridView控件中添加验证功能的解决方法。通过使用正则表达式对象对要插入的数据进行验证,可以确保插入到数据库中的数据符合要求。如果要了解更多关于正则表达式的知识,可以访问regular-expressions.info,并在regex101.com上进行测试。

0