我有一个gridview将值插入数据库,但它总是显示最新值(我使用标签测试)。我想让它输入网格视图中每行的数据库(多行)值中的所有值,以插入数据库中的多行。
这是我的网格视图:
我需要将每行的值保存到数据库中。这是我的代码:
protected void btnCreate_Click(object sender, EventArgs e)
{
if (int.TryParse(testLabel.Text, out number))//Click count
{
testLabel.Text = (++number).ToString();
}
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TextBox box1 = (TextBox)GridView1.Rows[i].Cells[1].FindControl("TextBox1");
TextBox box2 = (TextBox)GridView1.Rows[i].Cells[2].FindControl("TextBox2");
Model.question act = new Model.question(); // Entity Model CRUD
act.Answer = box2.Text; //Always show the last value.
act.QuestionContent = box1.Text; // Always show the last value.
act.TaskName = "Grammar";
act.ActivityName = dropListActivity.SelectedItem.Text;
act.QuestionNo = testLabel.Text;
daoQuestion.Insert(act);
}
daoQuestion.Save();
}
}
答案 0 :(得分:1)
TextBox1和TextBox2在整个网格中是相同的。通过从不同的网格中选择TextBox1和TextBox2没有帮助,您只需从相同的两个TextBox中获取值。
尝试将TextBox添加到List中,然后只需获取Text并插入数据库。
要将TextBox添加到列表中,您可以执行此操作。
List<TextBox> tbList = new List<TextBox>();
tbList.Add(new TextBox{ Name="textbox"+i++ });
随后,要获取值,只需执行此操作。
for(int i = 0; i < tbList.Count; i++)
{
//To see the data you're inserting into database.
Response.Write(tb[i].Text);
Response.Write(tb[i+1].Text);
//Insert into database based on your code.
daoQuestion.Insert(new Model.question
{
Answer = tb[i].Text,
QuestionContent = tb[++i].Text,
TaskName = "Grammar",
ActivityName = dropListActivity.SelectedItem.Text,
QuestionNo = testLabel.Text
});
daoQuestion.Save();
}