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

我有一个显示学生的gridview,每行都有一个文本框,可在其中输入他们的标记。我正在尝试从数据库表中提取当前的'Mark'值并将其放入该特定学生的文本框中,但是数据表中的最后一个值将为每个学生重复。


我如何获取数据表值以分别填充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();


        }


    }


蛊毒传说
浏览 286回答 2
2回答

潇潇雨雨

一切正常,感谢您对@wazz的帮助TextBox标记=(TextBox)e.Row.FindControl(“ MarkTextBox”);&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < gradeAlways.Rows.Count +1; i++)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SqlDataAdapter da = new SqlDataAdapter(command);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DataTable dt = new DataTable();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; da.Fill(dt);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var Mark = dt.Rows[i]["Mark"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; marks.Text = Mark.ToString();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }我不得不把gradeAlways.Rows.Count +1

蝴蝶刀刀

如果这是RowDataBound事件,则代码针对每一行运行。因此,对于第一个gridview行,您将循环整个表并将textbox值设置为当前表行。也就是说,表格中的最后一个值将始终是每个gridview行的值。因此,在RowDataBound事件中,您需要得到当前的行数(假设是3);从第3行的表格中获取值并设置文本框;在下一个RowDataBound(它们全部一次运行)上,您的代码将获得第4行,并将文本框设置为表的第4行中的值。
打开App,查看更多内容
随时随地看视频慕课网APP