Jim*_*m B 5 c# data-binding objectdatasource telerik radgrid
关于我正在做的事情的一些快速背景:
我的问题如下:是否有可能以某种方式"拦截"从ObjectDataSource返回的集合,以便我可以在将集合传递给RadGrid之前对其进行操作?
如果这是不可能的; 这不是一个破坏者.我相信我可以修改Select()方法来接受这两个列表; 并在那里进行操作.我的另一个途径是为网格实现NeedDataSource()事件,并在那里进行操作.
理想情况下,我想使用第一个选项.有没有人成功这样做过?
您可以从 ObjectDataSource 和 ObjectDataSourceView 派生,并分别重写 GetView 和 ExecuteSelect,如下所示:
public class MyObjectDataSource : ObjectDataSource
{
private MyObjectDataSourceView _view;
private MyObjectDataSourceView GetView()
{
if (_view == null)
{
_view = new MyObjectDataSourceView(this, "DefaultView", Context);
if (IsTrackingViewState)
{
((IStateManager)_view).TrackViewState();
}
}
return _view;
}
protected override DataSourceView GetView(string viewName)
{
return GetView();
}
}
public class MyObjectDataSourceView : ObjectDataSourceView
{
public MyObjectDataSourceView(MyObjectDataSource owner, string name, HttpContext context)
: base(owner, name, context)
{
}
protected override IEnumerable ExecuteSelect(DataSourceSelectArguments arguments)
{
IEnumerable dataSource = base.ExecuteSelect(arguments);
// TODO: do your stuff here
return dataSource;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |