如何在ASP.net的GridView中使用单个按钮更新多行数据?

4
功能需求是从数据库(SQL Server)获取学生列表(3列),并在网页上显示出来,每行前面都有一个空白字段用于输入数据。接下来,允许用户输入学生考试成绩并将其更新到数据库中。
现在,我知道可以使用gridview通过单独的更新按钮字段完成此操作。但是,在这种情况下,每一行前面都会有一个更新按钮,用户需要为每个学生(超过100个)点击它。这对用户来说是一个繁琐的任务。
我希望用户为所有学生输入分数,然后只需单击1个按钮即可更新所有行。
在按钮单击事件中,我们可以使用foreach循环遍历GridViewRows,但请帮助我设计用户界面。如何实现?如何使用单个按钮单击而不是'n'次单击?
可以使用gridview完成吗?还是有其他东西可以完成任务?
谢谢

为什么你不想使用循环? - Govind Malviya
3个回答

7
在第四列的模板字段中放置一个文本框。
<asp:TemplateField HeaderText="Marks Scored">
    <ItemTemplate>
        <asp:TextBox runat="server" ID="txtMarksScored" />
    </ItemTemplate>
</asp:TemplateField>

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

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
    }
}

不错的样例,我现在正在尝试它,用于类似Excel的网格。 - ShaunOReilly
我想从MySQL中获取数据并在文本框中显示以前的记录,然后想要进行编辑。如何实现? - Deepa MG

0

虽然有点迟了,但也许有人仍在寻找这个答案。由于你没有提及任何条件或代码示例,所以我假设以下是正确的代码:

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<TextBox>().FirstOrDefault().Text + "  ", con);
                cmd1.Parameters.AddWithValue("@ColumnName", row.Cells[5].Controls.OfType<TextBox>().FirstOrDefault().Text);                
                cmd1.ExecuteNonQuery();
                con.Close();
            }
        }
    }

// 现在将UpdateAllRecord()调用到你的按钮点击事件或其他事件中
protected void upload_Click(object sender, EventArgs e)
    {
        UpdateAllRecord()
    }

0

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

除了注册新的gridview类型并将现有的asp:GridView替换为新类型之外,您需要做的最少的事情是告诉GridView您的“SaveButton”的ID。然后,该按钮将触发每个更改的行的RowUpdating/Updated事件。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接