将循环值保存到数据库

时间:2013-05-29 02:20:24

标签: c# database gridview for-loop

我有一个gridview将值插入数据库,但它总是显示最新值(我使用标签测试)。我想让它输入网格视图中每行的数据库(多行)值中的所有值,以插入数据库中的多行。

这是我的网格视图:

enter image description here

我需要将每行的值保存到数据库中。这是我的代码:

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(); 
    }
}

1 个答案:

答案 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();
}