使用datatable中的值填充gridview中的文本框

时间:2018-04-12 21:56:15

标签: c# asp.net gridview datatable sqldataadapter

我有一个显示学生的网格视图,每行都有一个文本框,可以在其中输入标记。我试图拉动目前的马克'数据库表中的值并将其放入该特定学生的文本框中,但是每个学生都会重复数据表中的最后一个值。

如何获取数据表值以单独填充gridview的每一行?

        TextBox marks = (TextBox)e.Row.FindControl("MarkTextBox");

        SqlDataAdapter da = new SqlDataAdapter(command);
        DataTable dt = new DataTable();
        da.Fill(dt);

        foreach (DataRow dr in dt.Rows)
        {

            int Mark = (int)dr["Mark"];
            marks.Text = Mark.ToString();

        }

    }

2 个答案:

答案 0 :(得分:0)

如果这是RowDataBound事件,则代码将运行每个行。

因此,对于第一个 gridview 行,您将循环整个表并将文本框值设置为当前行。意思是,表中的最后一个值将始终是每个gridview行的值

所以在RowDataBound事件中你需要

  • 获取当前行数(比如说' 3);
  • 从第3行的表中获取值并设置文本框;

在下一个RowDataBound上(它们都一次运行),您的代码将获得第4行,并且您将文本框设置为表格第4行中的值。

答案 1 :(得分:0)

让它工作,谢谢你的帮助@wazz

TextBox marks =(TextBox)e.Row.FindControl(" MarkTextBox");

        for (int i = 0; i < gradeAlways.Rows.Count +1; i++)
        {
                SqlDataAdapter da = new SqlDataAdapter(command);
                DataTable dt = new DataTable();
                da.Fill(dt);

                    var Mark = dt.Rows[i]["Mark"];
                        marks.Text = Mark.ToString();


            }

我必须把gradeAlways.Rows.Count +1