1

我有一个 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(); 
    }
}
4

1 回答 1

1

TextBox1 和 TextBox2 在整个 Grid 中都是相同的。通过从不同的网格中选择 TextBox1 和 TextBox2 没有帮助,您只会从相同的两个 TextBoxes 中获取值。

尝试将 TextBoxes 添加到 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();
}
于 2013-05-29T02:31:28.320 回答