と を使用しRepositoryItemCheckEditてを追加しようとしています。ただし、チェックボックスを1つしかチェックできません。別のものをチェックすると、前にチェックしたチェックボックスがオフになります。私はネット上で見つけることができるすべてに従いましたが、これを機能させることができませんでした. 私は何が欠けていますか?GridViewdevexpressWinforms
列を挿入するコード部分:
gcIsEmirleri.DataSource = (from i in isemirleri
                            select new
                            {
                                ID = i.isEmriId,
                                // other attributes
                            }).ToList();
GridColumn column = gvIsEmirleri.Columns["Sec"];
if (column == null)
{
    gvIsEmirleri.BeginUpdate();
    DataColumn col = new DataColumn("Sec", typeof(bool));
    column = gvIsEmirleri.Columns.AddVisible("Sec");
    col.VisibleIndex = 0;
    col.Caption = "Sec";
    col.Name = "Sec";
    col.OptionsColumn.AllowEdit = true;
    gvIsEmirleri.EndUpdate();
    gvIsEmirleri.Columns["Sec"].UnboundType = DevExpress.Data.UnboundColumnType.Boolean;
    RepositoryItemCheckEdit chk = new RepositoryItemCheckEdit();
    chk.ValueChecked = true;
    chk.ValueUnchecked = false;
    gvIsEmirleri.Columns["Sec"].ColumnEdit = chk;
    chk.QueryCheckStateByValue += chk_QueryCheckStateByValue;
}
コード部分では、チェックボックスを 3 つではなく 2 つの状態にしています。
private void chk_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e)
{
    if (e.Value == null)
    {
        e.CheckState = CheckState.Unchecked;
        e.Handled = true;
    }
}
編集: を作成List<bool> chkList;し、次の操作を行います: この関数は、checkedits に追加されますCheckStateChanged:
private void chk_CheckStateChanged(object sender, EventArgs e)
{
    CheckEdit chk = sender as CheckEdit;
    if (chk.Checked) 
        chkList[gvIsEmirleri.FocusedRowHandle] = true;
    else 
        chkList[gvIsEmirleri.FocusedRowHandle] = false;
    FillBindingSource();
}
にFillBindingSource次の行を追加しました。
for (int i = 0; i < chkList.Count; i++)
{
    if (chkList[i])
        gvIsEmirleri.SetRowCellValue(i, "Sec", true);
}
これらの行をデバッグすると、List正しいブール値があり、必要なgvIsEmirleri.SetRowCellValue(i, "Sec", true);ときに操作されることがわかります。しかし、それでもうまくいきません。