C# 如何将gridview内容存储到数据库表中
我有一个只有一列的gridview。我编写了如下代码C# 如何将gridview内容存储到数据库表中,c#,C#,我有一个只有一列的gridview。我编写了如下代码 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { SqlConnection con = new SqlConnection(strConnString); con.Open(); for (int i = 0; i < GridView1.Rows.Count; i++
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
SqlConnection con = new SqlConnection(strConnString);
con.Open();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
string Users = GridView1.Rows[i].Cells[0].Text;
string strQuery = "insert into Table1 (FileName, DateTimeUploaded, Type, Username)" +
" values(@FileName, @DateTimeUploaded, @Type, @Username)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.AddWithValue("@FileName", datalink);
cmd.Parameters.AddWithValue("@Type", ext);
cmd.Parameters.AddWithValue("@DateTimeUploaded", DateTime.Now);
cmd.Parameters.AddWithValue("@Username", Users);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.ExecuteNonQuery();
}
con.Close();
con.Dispose();
}
受保护的无效GridView1\u行数据绑定(对象发送方,GridViewRowEventArgs e)
{
SqlConnection con=新的SqlConnection(strConnString);
con.Open();
对于(int i=0;i
如果这个gridview有两行,那么第一行将在数据库中存储两次。如果gridview有3行,则第一行存储三次。我如何解决这个问题?解释:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
SqlConnection con = new SqlConnection(strConnString);
con.Open();
string Users = e.Row.Cells[0].Text; // current row being bound
string strQuery = "insert into Table1 (FileName, DateTimeUploaded, Type, Username)" +
" values(@FileName, @DateTimeUploaded, @Type, @Username)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.AddWithValue("@FileName", datalink);
cmd.Parameters.AddWithValue("@Type", ext);
cmd.Parameters.AddWithValue("@DateTimeUploaded", DateTime.Now);
cmd.Parameters.AddWithValue("@Username", Users);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
con.Dispose();
}
}
您正在将数据插入GridView的RowDataBound
事件中的数据库中-每次绑定DataRow时都会执行此操作!这一点,以及您每次使用以下命令循环访问每一行的事实:
for (int i = 0; i < GridView1.Rows.Count; i++) { // inserting record from each row }
您可能还希望只检查数据行,这样您的操作就不会发生在页脚/页眉行等上
新代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
SqlConnection con = new SqlConnection(strConnString);
con.Open();
string Users = e.Row.Cells[0].Text; // current row being bound
string strQuery = "insert into Table1 (FileName, DateTimeUploaded, Type, Username)" +
" values(@FileName, @DateTimeUploaded, @Type, @Username)";
SqlCommand cmd = new SqlCommand(strQuery);
cmd.Parameters.AddWithValue("@FileName", datalink);
cmd.Parameters.AddWithValue("@Type", ext);
cmd.Parameters.AddWithValue("@DateTimeUploaded", DateTime.Now);
cmd.Parameters.AddWithValue("@Username", Users);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
con.Dispose();
}
}
在执行更多操作之前,您可能需要搜索“.Net数据绑定”。您可能会发现一些可以为您做任何事情的东西……您应该检查代码中的“e.ItemType”。