繁体   English   中英

如何在C#中应用过滤器后重置具有复选框的datagridview

[英]How to reset datagridview having checkbox after filter is applied in c#

我是C#编码的新手,对此感到震惊。

我有一个带有DataGridViewCheckBoxColumn列的DataGridView,该列数据绑定到列表。

在将过滤器应用于datagridview之后,过滤器可以正常工作,但是如果我使用复选框检查该行,我将无法保留它,因为在单击后,我再次加载了datagridview,这松开了复选框的选择,并且再次创建了CheckBoxColumn。

我需要保留带/不带过滤器的复选框选择,并且当我重置datagridview时,checkboxcolumn应该出现一次

public AddressReport1()
    {
        InitializeComponent();
        loadData();//load gridview
    }
    public void loadData()
    {

        if (conn.State == ConnectionState.Closed)
            conn.Open();
        SqlCommand cmdSelect = new SqlCommand(@"SELECT ContactId,ReceiverName,City,Address,ContactNo1,ContactNo2,GSTNumber,State FROM tbl_contacts", conn);
        SqlDataAdapter da = new SqlDataAdapter(cmdSelect);
        DataTable dt = new DataTable();
        da.Fill(dt);
        dgvAddressReport1.DataSource = dt;
        //create checkbox column dynamically in datagridview
        DataGridViewCheckBoxColumn select = new DataGridViewCheckBoxColumn();

        select.Name = "select";
        select.HeaderText = "select";
        select.Width = 50;
        select.ReadOnly = false;
        select.FillWeight = 10; //if the datagridview is resized (on form resize) the checkbox won't take up too much; value is relative to the other columns' fill values
        //add checkbox column in first row of gridview
        dgvAddressReport1.Columns.Insert(0, select);
        int dgvindex = dgvAddressReport1.Columns["select"].Index;
        MessageBox.Show(dgvindex.ToString());
        conn.Close();

    }
    private void btnBack_Click_1(object sender, EventArgs e)
    {
         loadData();[enter image description here][1]
    }

首先,您可以在loadData方法之外(可能在构造函数中)创建DataGridViewCheckBoxColumn 因此它将仅创建一次。

要保留复选框的选择,可以在数据表或数据库中添加布尔字段。 每次单击一行时,只需更新该标志即可。

当您具有DataGridViewCheckBoxColumn时 ,在重新绑定数据源时,将根据布尔标志自动选中或取消选中此列

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM