我想启用/禁用在我的网格控件的每一行中找到的按钮。我不知道如何通过代码访问它。我认为它将是GridView1方法.....
答案 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属性,则单元格将无法编辑,按钮编辑器也不会响应用户点击...