0
我想啓用/禁用在我的網格控件的每一行中找到的按鈕。我不確定我如何通過代碼訪問它。我認爲這將是GridView1方法.....訪問網格控制中的按鈕Prgrammically DevExpress
我想啓用/禁用在我的網格控件的每一行中找到的按鈕。我不確定我如何通過代碼訪問它。我認爲這將是GridView1方法.....訪問網格控制中的按鈕Prgrammically DevExpress
只需處理顯示編輯器事件即可禁用該按鈕(或者更好的是,對特定單元格的整個編輯)......然後,您可以檢查其他列的值,然後根據您的意願取消該單元格的編輯。這裏有一些示例程序的代碼,告訴你如何做到這一點:
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列的值,你可以做任何你想要的,並檢查你喜歡的任何條件。
如果設置了ShowingEditor事件的CancelEventArgs的e.Cancel屬性,細胞將無法修改和按鈕編輯器將不會對用戶點擊迴應...
能否請你解釋一下你添加按鈕到gridControl行?另外,請解釋您爲什麼需要訪問這些按鈕。 – 2010-11-08 20:02:11
我通過在網格控件中創建一個新列來添加按鈕,並將columnEdit屬性設置爲一個簡單的按鈕。我需要訪問啓用按鈕的屬性,當表單根據另一個列值加載時,每行可能會或可能不會啓用按鈕。 – 2010-11-08 21:05:06