如何在单个按钮单击中使用ASP.net中的gridview更新多行?

function要求是从数据库(SQL Server)获取学生列表(3个coloums)并将其显示在网页上,以及每行前面的空白字段以输入数据。 接下来,允许用户输入测试中学生评分的分数并更新数据库中的分数。

现在,我知道可以使用gridview将Update Button Field作为单独的coloumn来完成。 但在这种情况下,每行前面都会有一个更新按钮,用户需要为每个学生点击它(超过100个)。 这对用户来说是一项繁琐的任务。

我希望该用户为所有学生输入标记,然后仅单击1按钮,这将更新所有行。

在按钮单击事件中,我们可以使用GridViewRows的foreach循环,但请帮助我使用用户界面。 如何使它成为可能? 如何使用单击按钮而不是’n’点击?

可以使用gridview完成吗? 还是有其他东西可以完成任务?

谢谢

将文本框放在第四列的模板字段中

     

然后在按钮内单击事件循环通过网格视图行并获取文本框以获取输入的值。

 protected void Submit_Click(object sender, EventArgs e) { foreach (GridViewRow gvr in GridView1.Rows) { TextBox txtMarksScored = (TextBox)gvr.FindControl("txtMarksScored"); // Hope you understand what to do next? // txtMarksScored.Text } } 

可以在Matt Dotsons Blog上找到完整的多行编辑解决方案。 我在自己的应用程序中使用它。

除了注册新的gridview类型并用新类型交换现有的asp:GridView之外,你至少需要做的是告诉GridView你的“SaveButton”的ID。 然后,此按钮将触发更改的每一行的RowUpdating / Updated事件。

有关详细信息和可下载的源代码,请参阅Dotsons博客文章。

虽然很晚,但可能是我寻找它的人。 由于您没有提到任何条件或代码示例,所以我假设这一点,下面是代码:

 private void UpdateAllRecord() { StringBuilder query = new StringBuilder(); for (int i = 0; i < GridViewName.Rows.Count; i++) { GridViewRow row = GridViewName.Rows[i]; using (SqlConnection con = new SqlConnection(connStr)) //use your connection string { con.Open(); SqlCommand cmd1 = new SqlCommand("update YourTable set ColumnName=@ColumnName where Id= " + row.Cells[0].Controls.OfType().FirstOrDefault().Text + " ", con); cmd1.Parameters.AddWithValue("@ColumnName", row.Cells[5].Controls.OfType().FirstOrDefault().Text); cmd1.ExecuteNonQuery(); con.Close(); } } } 

//现在将UpdateAllRecord()调用到您的按钮单击事件或任何其他事件

 protected void upload_Click(object sender, EventArgs e) { UpdateAllRecord() }