Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将多个选中值从gridview插入数据库_Sql_Asp.net_Gridview_Checkbox_Insert - Fatal编程技术网

Sql 将多个选中值从gridview插入数据库

Sql 将多个选中值从gridview插入数据库,sql,asp.net,gridview,checkbox,insert,Sql,Asp.net,Gridview,Checkbox,Insert,如果我的gridview中的数据被检查与否,我有这个方法来循环,如果它们被检查,它们应该被插入到数据库中。 正如您所看到的,我想从gridview中插入的唯一数据是gridview中单元格[2]中的文本,它的名称为@HeaderName using (SqlConnection con = new SqlConnection("my con string")) { con.Open(); foreach (GridV

如果我的gridview中的数据被检查与否,我有这个方法来循环,如果它们被检查,它们应该被插入到数据库中。 正如您所看到的,我想从gridview中插入的唯一数据是gridview中单元格[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;

但是这似乎不起作用

为什么要使用
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);
        // ...
    } 
}

爆炸?你可以查看AddWithValue=@HeaderName我需要把它放在那里,它不起作用,因为我刚刚意识到gridview.s选中的行不起作用,因为没有选中任何行,它们都是通过复选框选中的,而不是“我的gridview中选中的单元格的名称”是什么?是否确实要插入这些复选框的
Text
属性?如果是这样,为什么不使用
myCheckBox.Text
?因为复选框和它旁边的文本位于两个不同的单元格中,但在同一行上。所以基本上,只要检查我想要的名字,然后把它们插入表中,就可以了,只是缺少了一个headerNameHi人对不起,我迟了回答,我通过查看你的方法解决了这个问题,只做了一些小改动,但这是对的!非常感谢你的帮助