在网格控制Prgrammically DevExpress中访问按钮

时间:2010-11-08 19:53:05

标签: devexpress

我想启用/禁用在我的网格控件的每一行中找到的按钮。我不知道如何通过代码访问它。我认为它将是GridView1方法.....

1 个答案:

答案 0 :(得分:1)

您可以通过处理ShowingEditor事件来禁用按钮(或者更好的是,特定单元格的整个编辑)...然后您可以检查其他列的值,然后取消对该单元格的编辑取决于您的祝愿。下面是一些示例程序的代码,它向您展示了如何执行此操作:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid;

namespace GridButtonDisable
{

public partial class Form1 : Form
{
    public class MyData
    {
        public int Number { get; set; }
        public bool Even { get { return Number % 2 == 0; } }
    }

    public Form1()
    {
        InitializeComponent();

        List<MyData> List = new List<MyData>
        {
            new MyData() { Number = 1 },
            new MyData() { Number = 2 },
            new MyData() { Number = 5 },
            new MyData() { Number = 7 },
            new MyData() { Number = 10 },
        };

        gridControl1.DataSource = List;
        gridView1.ShowingEditor += gridView1_ShowingEditor;
    }

    private void gridView1_ShowingEditor(object sender, CancelEventArgs e)
    {
        GridView view = sender as GridView;
        if (view.FocusedColumn.Name == "gridButtonCol" && 
            !(bool)view.GetRowCellValue(view.FocusedRowHandle, "Even") )
            e.Cancel = true;
    }
}

这是一个非常简单的程序。您必须假设您的按钮编辑列名为gridButtonCol ...我正在测试我为此示例创建的MyData类的Even列的值,您可以执行任何操作并检查您喜欢的任何条件。< / p>

如果您设置了ShowingEditor事件的CancelEventArgs的e.Cancel属性,则单元格将无法编辑,按钮编辑器也不会响应用户点击...

相关问题