你缺少之列,這是該網格綁定DataSource中的列或屬性名稱的FieldName
:
column.FieldName = "Code";
這使得控制知道哪些領域將篩選和分類。此外,您可能需要允許排序和過濾:
column.Settings.AllowSort = DefaultBoolean.True; // I think this is the default
column.Settings.AllowHeaderFilter = DefaultBoolean.True;
如果您需要定義其他過濾選項,您還可以設置HeaderFilterFillItems
方法在網格設置,並在事件參數的參數修改Values
集合:
gridSettings.HeaderFilterFillItems = (sender, e) =>
{
if (e.Column.FieldName.Equals("Code")) {
e.Values.Clear();
e.AddValue("DisplayOption", "Value", "Query");
// ...
}
};
UPDATE:如果你的列有自定義的數據,那麼它是綁定的,你可以使用事件CustomColumnUnboundData
定義之列,這也將被用來篩選/排序網格的價值:
// Same column definition as yours
settings.Columns.Add(column =>
{
column.Caption = "Code";
column.Settings.AllowGroup = DefaultBoolean.True;
column.SetDataItemTemplateContent(c =>
{
ViewContext.Writer.Write(DataBinder.Eval(c.DataItem, "Code"));
});
column.SetEditItemTemplateContent(c =>
{
if (DataBinder.Eval(c.DataItem, "Code") != null)
{
ViewContext.Writer.Write(DataBinder.Eval(c.DataItem, "Code"));
}
else
{
Html.DevExpress().TextBox(textBox =>
{
textBox.Width = Unit.Percentage(100);
textBox.Name = "Code";
}).Render();
}
});
});
// CustomUnboundColumnData event handler
settings.CustomUnboundColumnData = (sender, e) => {
if(e.Column.Caption.Equals("Code")) {
// You can get the value of any existing field in the datasource, this way:
string code= (string)e.GetListSourceFieldValue("Code");
// Do some processs to get the custom value
// ...
// And set it to the Value propery of the event args parameter
e.Value = myCustomValue;
}
};
您可以在這個環節發現unboud數據的例子:https://www.devexpress.com/Support/Center/Example/Details/E2824
我不明白你的異步回調的意思。我的問題是,當我添加SetDataItemTemplateContent或SetEditItemTemplateContent到任何列,排序或分組或過濾不起作用。我想我需要自定義實現,但我不能那樣做。 – WeyCell
我明白了,對不起,我不明白。我昨天有同樣的問題。我會更新我的答案。 –
@ user2702694,我已經更新了我的答案。嘗試,並讓我知道它是否工作:) –