簡體   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