2014-05-22 52 views
0

我正在devexpress上工作,並有一些問題。這是我的代碼:MVC4 Devexpress排序,分組和過濾不起作用

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(); 
     } 
    }); 
}); 

即時加入這樣一列,它顯示合適的值,BU排序或分組或過濾不工作。我如何使這些功能起作用? 請幫忙!!

回答

1

你缺少之列,這是該網格綁定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

+0

我不明白你的異步回調的意思。我的問題是,當我添加SetDataItemTemplateContent或SetEditItemTemplateContent到任何列,排序或分組或過濾不起作用。我想我需要自定義實現,但我不能那樣做。 – WeyCell

+0

我明白了,對不起,我不明白。我昨天有同樣的問題。我會更新我的答案。 –

+0

@ user2702694,我已經更新了我的答案。嘗試,並讓我知道它是否工作:) –