【问题标题】:Insert multiple checked values from gridview into Database将gridview中的多个选中值插入数据库
【发布时间】:2015-02-02 12:33:13
【问题描述】:

如果我的gridview中的数据被选中,我有这个方法来循环遍历,如果它们被选中,它们应该被插入到数据库中。 如您所见,我想从 gridview 中插入的唯一数据是 gridview 中 cell[2] 中的文本,它的名称为 @HeaderName

        using (SqlConnection con = new SqlConnection("my con string"))
        {
            con.Open();
            foreach (GridViewRow row in GridViewConsNames.Rows)
            {
                CheckBox myCheckBox = row.FindControl("myCheckBox") as CheckBox;
                if (myCheckBox.Checked)
                {
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO Accounting_Consolidation_ServiceOutputs(Cusomer_Name, Service_Name, Header_Name, Sort_Postion, Rename_to, Value) Values(@CustName,@ServiceName,@HeaderName,@Sort,@Rename,@Value)", con))
                    {
                        //cmd.Parameters.AddWithValue("PersonId", Convert.ToInt32(GridViewConsNames.DataKeys[row.RowIndex].Value));
                        cmd.Parameters.AddWithValue("@CustName", TextBoxCustName.Text);
                        cmd.Parameters.AddWithValue("@ServiceName", DropDownListServicesAvailable2.SelectedItem.Text);
                        cmd.Parameters.AddWithValue("@HeaderName", "Name of the checked cells from my gridview");
                        cmd.Parameters.AddWithValue("@Sort", null);
                        cmd.Parameters.AddWithValue("@Rename", "");
                        cmd.Parameters.AddWithValue("@Value", null);
                        cmd.ExecuteNonQuery();
                    }
                }
            }
        }

我试过了

 GridViewRow row = GridViewConsNames.SelectedRow; 
 string headername = row.Cells[2].Text;

但这似乎不起作用

【问题讨论】:

  • 爆炸?你可以看看 AddWithValue = @HeaderName 我需要把它放在那里,它不起作用,因为我刚刚意识到 gridview.slected 行不起作用,因为没有选择行,它们都是通过复选框选择的
  • 什么是“我的gridview中选中的单元格的名称”?您真的要插入这些复选框的Text 属性吗?如果是这样,你为什么不使用myCheckBox.Text
  • 因为复选框和旁边的文本位于 2 个不同的单元格中,但位于同一行。所以基本上,只需检查我想要的名称并将它们插入表中,只是缺少 headerName

标签: sql asp.net gridview checkbox insert


【解决方案1】:

当您实际上想要使用选中复选框的所有行时,为什么要使用GridViewRow row = GridViewConsNames.SelectedRow

所以我想这就是你想要的:

foreach (GridViewRow row in GridViewConsNames.Rows)
{
    CheckBox myCheckBox = row.FindControl("myCheckBox") as CheckBox;
    if (myCheckBox.Checked)
    {
        // ...
            string headerName = row.Cells[2].Text;
            cmd.Parameters.AddWithValue("@HeaderName", headerName);
        // ...
    } 
}

【讨论】:

  • 嗨,对不起,我的回答迟了,我通过查看您的方法进行了一些小改动来解决它,但它是正确的!非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多