RepositoryItemCheckEdit nicht bleiben aktiviert
Ich versuche, um eine RepositoryItemCheckEdit
zu meinem GridView
mit devexpress
und Winforms
. Allerdings kann ich immer nur eine checkbox aktiviert werden. Wenn ich überprüfen andere, die checkbox habe ich aktiviert, bevor wird deaktiviert. Ich folgte alles, was ich finden kann im Netz, aber konnte nicht diese Arbeit machen. Was bin ich?
Den code Teil den ich einfügen die Spalte:
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;
}
Den code-Teil I machen Sie das Kontrollkästchen zwei-angegeben statt drei:
private void chk_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e)
{
if (e.Value == null)
{
e.CheckState = CheckState.Unchecked;
e.Handled = true;
}
}
BEARBEITEN: ich erstellte eine List<bool> chkList;
und führen Sie die folgenden Operationen:
Diese Funktion wird Hinzugefügt, um 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();
}
In FillBindingSource
fügte ich folgende Zeilen ein:
for (int i = 0; i < chkList.Count; i++)
{
if (chkList[i])
gvIsEmirleri.SetRowCellValue(i, "Sec", true);
}
Ich Debuggen dieser Zeilen, sehe ich, dass List
hat richtigen bool-Werte und gvIsEmirleri.SetRowCellValue(i, "Sec", true);
betrieben wird, wenn es muss. Aber es funktioniert immer noch nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Vermutung ist : Sie sind mit einer ungebundenen Spalte, und Sie werden nicht gespeichert die geprüft /unckecked info, also nach der markierten Zeile Links, die
checkBox
erhalten, es ist Anfangswert (unckecked).Für diese, ich schlage vor, Sie behandeln die
CustomUnboundColumnData
Ereignis in Ihrem Blick. Hier ist eine einfache :Hinweis : Dies ist der Weg, ich beschloss, dass ich ein ähnliches problem, aber ich habe nicht testen Sie den code, den ich gerade schrieb.