我正在尝试为LINQ结果表添加别名,但我找不到任何方法来执行此操作。
特别是我使用带有CustomExpression和DynamicData的QueryExtender来过滤EntityDataSource。这可以工作,直到我按其中一列排序,我得到一个错误,表“它”找不到。 我知道这是DynamicData包装所有内容的表别名。
protected void FilterBasedOnDateRange(object sender, CustomExpressionEventArgs e)
{
if (filterFromDate.SelectedDate != null && filterToDate.SelectedDate != null)
e.Query = (from p in e.Query.Cast<CalendarDay>()
where p.CalendarDate >= filterFromDate.SelectedDate && p.CalendarDate <= filterToDate.SelectedDate
select p);
}
<asp:Label ID="filterFromDateLabel" runat="server" Text='From Date' Font-Bold="true" />
<telerik:RadDatePicker ID="filterFromDate" runat="server" OnSelectedDateChanged="OnSelectedDateChanged" AutoPostBack="true" >
</telerik:RadDatePicker>
<asp:Label ID="filterToDateLabel" runat="server" Text='To Date' Font-Bold="true" />
<telerik:RadDatePicker ID="filterToDate" runat="server" OnSelectedDateChanged="OnSelectedDateChanged" AutoPostBack="true" >
</telerik:RadDatePicker>
<br /><br />
<asp:QueryExtender ID="qeRange" runat="server" TargetControlID="GridDataSource">
<asp:CustomExpression OnQuerying="FilterBasedOnDateRange" />
</asp:QueryExtender>
答案 0 :(得分:2)
错误是“PageRequestManagerServerErrorException:Instance属性'''没有为类型”
定义我在http://forums.asp.net/p/1528965/3696540.aspx
上找到了解决方案“在DynamicData文件夹下的List.aspx页面模板中为实体数据源添加选择事件,并在事件中添加以下代码行。”
string s=e.SelectArguments.SortExpression;
if(s.StartsWith("it."))
e.SelectArguments.SortExpression = s.Substring(3);