Как сделать CheckBox проверенным и непроверенным, чтобы пользователь мог изменить его в Grid Control?

Я разработал grid control с 20 рядами и 3 столбцами. В первом столбце я поместил несколько жестко закодированных строк, а во втором столбце я хочу поставить checkBox с проверенным непроверенным поведением, так что пользователь может изменить его. Я написал код для этого в QueryCellInfo событие в моем коде ниже, но это не работает.

Как мне это завершить?

Пожалуйста, предложите.

Ниже моя часть кода:

public partial class Form1 : Form
{
    System.Windows.Forms.Timer t1 = new System.Windows.Forms.Timer();
    private Syncfusion.Windows.Forms.Grid.GridControl gridControlDownloadScript = new Syncfusion.Windows.Forms.Grid.GridControl();
    public Form1()
    {
       // this.gridControl1.GridVisualStyles = Syncfusion.Windows.Forms.GridVisualStyles.Metro;
        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {

        gridControl1.Model.RowCount = 20;
        gridControl1.Model.ColCount = 3;
        this.gridControl1.VScrollPixel = true;
        this.gridControl1.HScrollPixel = true;


        this.gridControl1[0, 1].Text = "EMPLOYEE";
        this.gridControl1[0, 2].Text = "CHECKBOX";
        this.gridControl1[0, 3].Text = " ";
        this.gridControl1[1, 1].Text = "Rahul Verma";
        this.gridControl1[2, 1].Text = "MAnish Desai";
        this.gridControl1[3, 1].Text = "Mohan Pothala";
        this.gridControl1[4, 1].Text = "Dhanraj Dhoke";

        gridControl1.Model.RowCount = 20;

        gridControl1.Model.ColCount = 3;
        gridControl1.QueryCellInfo += new GridQueryCellInfoEventHandler(GridQueryCellInfo);
        gridControl1.SaveCellInfo += new GridSaveCellInfoEventHandler(GridSaveCellInfo);
        gridControl1.QueryRowCount += gridControl1_QueryRowCount;
        gridControl1.QueryColCount += gridControl1_QueryColCount;
        this.gridControl1.HScrollBehavior = GridScrollbarMode.Disabled; 
        this.gridControl1.VScrollBehavior = GridScrollbarMode.Disabled;

        this.gridControl1.ColWidths.ResizeToFit(GridRangeInfo.Cols(1, 1));

        this.gridControl1.RowHeights.ResizeToFit(GridRangeInfo.Rows(1, 20));


        t1.Interval = 250;

        t1.Tick += new EventHandler(IncreaseProgressBar);



    }

    private void CellClick(object sender, GridCellClickEventArgs e)
    {
    }



    private void IncreaseProgressBar(object sender, EventArgs e)
    {
        progressBar1.Increment(5);
        progressBar1.Minimum = 0;
        progressBar1.Maximum = 100;


        lblProgress.Text = progressBar1.Value.ToString() + "%";

        if (progressBar1.Value == progressBar1.Maximum)

            t1.Stop();
    }

    private void gridControl1_QueryColCount(object sender, GridRowColCountEventArgs e)
    {

    }

    private void gridControl1_QueryRowCount(object sender, GridRowColCountEventArgs e)
    {

    }

    private void GridQueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
    {
        int i = 0;
        while (i++ < 4)
        {
            if (i == 0 || i == 1 || i == 4 || i == 6 || i == 9 || i == 11 || i == 14)
            {

                continue;

            }
            else if (e.RowIndex == i && e.ColIndex == 2)
            {

                e.Style.CellType = GridCellTypeName.CheckBox;

                e.Style.Description = "";
        this.gridControl1[i, 2].CheckBoxOptions = new GridCheckBoxCellInfo("True", "False", string.Empty, false);
                e.Style.CheckBoxOptions.CheckedValue = "true";
                e.Style.CellValue = "true";

            }

        }
        if (e.RowIndex > 0 && e.ColIndex > 0)
        {


        }
    }

2 ответа

Вы можете сделать это вручную, используя свойства сетки, определив свойства столбца, вручную установив столбец как флажок, и тогда он будет вести себя так, как вы хотите

Событие QueryCellInfo будет срабатывать для каждой ячейки в GridControl. Согласно вашему коду, вы установили значение ячейки в true в событии QueryCellInfo. Таким образом, CellValue CheckBox будет оставаться True на все время. Если вы хотите, чтобы пользователь изменил CheckedValue, установите CellValue для этой конкретной ячейки как "True" в методе Form_Load(). Пожалуйста, обратитесь к приведенному ниже коду, фрагмент кода this.gridControl1[2, 2].CellValue = "True"; this.gridControl1[3, 2].CellValue = "True";

Пример скриншота

Примечание. Если у вас есть другие вопросы относительно элементов управления Syncfusion, рассмотрите возможность создания заявки в службу поддержки или публикации на форумах.

Другие вопросы по тегам