使用
CustomRowCellEdit
事件将不同的编辑器分配给各个单元格。您可以在字典中存储问题和RepositoryItemRadioGroup:
Dictionary<string, RepositoryItemRadioGroup> repositories = new Dictionary<string, RepositoryItemRadioGroup>();
RepositoryItemRadioGroup group1 = new RepositoryItemRadioGroup();
group1.Items.Add(new DevExpress.XtraEditors.Controls.RadioGroupItem("Fine", "Fine"));
group1.Items.Add(new DevExpress.XtraEditors.Controls.RadioGroupItem("Bad", "Bad"));
repositories.Add("How are you?", group1);
RepositoryItemRadioGroup group2 = new RepositoryItemRadioGroup();
group2.Items.Add(new DevExpress.XtraEditors.Controls.RadioGroupItem("Here", "Here"));
group2.Items.Add(new DevExpress.XtraEditors.Controls.RadioGroupItem("There", "There"));
repositories.Add("Where are you?", group2);
在CustomRowCellEdit事件处理程序中,调用
GetRowCellValue
方法获取问题,从字典中获取相应的存储库项,并设置e.RepositoryItem参数:
void GridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e) {
GridView view = sender as GridView;
if (e.Column.FieldName == "Answer" && view.IsValidRowHandle(e.RowHandle)) {
string question = (string)view.GetRowCellValue(e.RowHandle, "Question");
RepositoryItemRadioGroup item;
if(repositories.TryGetValue(question, out item))
e.RepositoryItem = item;
}
}
另请参见:
Modify and Validate Cell Values