如何设置从其他列勾选的列

时间:2016-10-18 08:49:15

标签: c# winforms devexpress

如何将值设置为gridview列?事情是手动添加了列,而不是从数据库添加。我想要的是当核对表值为1 cek22列获得ticked时,当值为0时,cek22列为unticked。我使用了devexpress。

我使用的代码示例:

public void abc()
{
    //select query in here
    gridControl1.DataSource = dt;

    //iam adding a column here
    dt.Columns.Add("cek22",typeof(bool));
}

enter image description here

3 个答案:

答案 0 :(得分:1)

如果您的列是手动添加的,那么您的列在未绑定模式下工作。所以,你可以使用它的unbound expression。如果您要更新checklist的{​​{1}}列,则可以使用cel22活动。
这是一个例子:

CellValueChanging

结果如下: Result

答案 1 :(得分:0)

DevExpress Grid可与DataSource配合使用。因此,操纵您的DataSource并将其填充到您的网格中。 GridView将显示此数据。因此,如果您想要一个检查字段,我建议您使用bool属性扩展您的DataSource。我现在不使用您正在使用的DataSource,但如果有任何bool值,devexpress会自动为您添加一个复选框列。如果要将自定义列链接到DataSource中的bool值,则需要将Column的FieldName属性设置为PropertyName。

如果您的清单属性为0,则您的布尔属性返回false,反之亦然。这是我猜的最简单的解决方案。假设您正在使用IList作为DataSource。

小例子:

    public class MyDataSource()
    {
        public int Checklist { get; set; }

        public bool Cek22
        {
            get { return Checklist == 1; }
        }
    }

    private void ExplainADevExpressGrid()
    {
        List<MyDataSource> dataSource = new List<MyDataSource>();
        dataSource.Add(new MyDataSource());

        myGrid.DataSource = dataSource;
    }

答案 2 :(得分:0)

或者,将列添加为数据源的一部分并有条件地填充它。

private void Form1_Load(object sender, EventArgs e)
{
    DataTable dataTable = GetDataTable(10);
    gridControl1.DataSource = dataTable;
}

private DataTable GetDataTable(int rows = 1)
{
    DataTable table = new DataTable("Table1");

    table.Columns.Add("checklist", typeof(int));
    table.Columns.Add("cek22", typeof(bool));

    for (int i = 0; i < rows; i++)
    {
        DataRow row = table.NewRow();
        row["checklist"] = i % 2 == 0 ? 0 : 1;
        row["cek22"] = ((int)row["checklist"]) == 0 ? false : true;

        table.Rows.Add(row);
    }

    return table;
}

enter image description here