带有复选框的Datagridview

时间:2016-08-24 01:12:53

标签: .net gridview datagridview

我试过这个,但没有将选定的值带到另一个网格视图

string data = "";
    foreach (GridViewRow row in GridView5.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            CheckBox chkRow = (row.Cells[0].FindControl("chkCtr") CheckBox);
            if (chkRow.Checked)
            {
                string Brand_Name = row.Cells[1].Text;
                string Market_Name = row.Cells[2].Text;
                string USC = row.Cells[3].Text;
                string Manufacture = row.Cells[4].Text;
                data = data + Brand_Name + " ,  ";
                //;+ Market_Name + " , " + USC + ","+Manufacture+"";

                gvrProducts.Visible = true;


                gvrProducts.DataSource = data;
                // ListBox1.DataBind();
                gvrProducts.DataBind();
            }
        }
    }

请帮忙

2 个答案:

答案 0 :(得分:1)

GridView需要data source control,例如LinqDataSource,ObjectDataSource或SqlDataSource控件。您正在使用字符串变量绑定gridview(不知道它如何绑定数据)。有很多方法可以绑定gridview,但我通过创建动态DataTable解释了这一点:

为第二个gridview创建一个空DataTable:

DataTable dt = new DataTable();
 DataRow dr = null;
 dt.Columns.Add(new DataColumn("Brand_Name", typeof(string)));
 dt.Columns.Add(new DataColumn("Market_Name", typeof(string)));
 dt.Columns.Add(new DataColumn("USC", typeof(string)));
 dt.Columns.Add(new DataColumn("Manufacture", typeof(string))); 

之后在foreach循环中向此数据表添加行:

    foreach (GridViewRow row in GridView5.Rows)
        {
            if (row.RowType == DataControlRowType.DataRow)
            {
                CheckBox chkRow = (row.Cells[0].FindControl("chkCtr") CheckBox);
                if (chkRow.Checked)
                {
                 dr = dt.NewRow();
                 dr["Brand_Name"] = row.Cells[1].Text;
                 dr["Market_Name"] = row.Cells[2].Text;
                 dr["USC"] = row.Cells[3].Text;
                 dr["Manufacture"] = row.Cells[4].Text;
                 dt.Rows.Add(dr);                 

                }
            }
        }

然后使用Datatable

绑定gridview
if(dt.Rows.Count>0)
{
 gvrProducts.Visible = true;
 gvrProducts.DataSource = dt;
 gvrProducts.DataBind();
}

答案 1 :(得分:0)

尝试添加此

Private Sub Gridview_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles Gridview.CurrentCellDirtyStateChanged
    Gridview.CommitEdit(DataGridViewDataErrorContexts.Commit)
End Sub

然后

Private Sub Gridview_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles Gridview.CellValueChanged
    Try
        Gridview.CommitEdit(DataGridViewDataErrorContexts.Commit)
        'add commit when chckbox is checked. Then your procedure/staff here.
        'Or call your for loop here
    Catch ex As Exception
    End Try
End Sub