这有点痛苦,我觉得这应该很容易。
我有一个EntityDataSource:
<asp:EntityDataSource ID="TaskDataSource" runat="server" ConnectionString="name=ScheduleEntities" DefaultContainerName="ScheduleEntities" EnableFlattening="False" EntitySetName="TaskItems" EnableInsert="True" EnableUpdate="True" OrderBy="it.Duration" Where="it.deleted = False">
我不能为我的生活让它只显示未删除的结果。 OrderBy有效,一切都很好......我只是无法过滤它。
答案 0 :(得分:0)
您需要在EntityDataSource中将AutoGenerateWhereClause属性设置为true,
<asp:EntityDataSource ID="TaskDataSource" runat="server" ConnectionString="name=ScheduleEntities" DefaultContainerName="ScheduleEntities" EnableFlattening="False" EntitySetName="TaskItems" EnableInsert="True" EnableUpdate="True" OrderBy="it.Duration" Where="it.deleted = False" AutoGenerateWhereClause="true">
答案 1 :(得分:0)
我通过在UI中创建带有过滤器的linqDataSource并采用过滤器格式来实现它,这里是代码:
<asp:EntityDataSource ID="TaskDataSource" runat="server" ConnectionString="name=ScheduleEntities" DefaultContainerName="ScheduleEntities" EnableFlattening="False" EntitySetName="TaskItems" EnableInsert="True" EnableUpdate="True" OrderBy="" Where="deleted == @deleted">
<WhereParameters>
<asp:Parameter DefaultValue="False" Name="deleted" Type="Boolean" />
</WhereParameters>
</asp:EntityDataSource>
但是,我无法最终使用它,因为我还需要在网格上使用动态过滤器,所以我的解决方法是在绑定过程中隐藏行(如果有更有效的方法请更新我!)用这个:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
var editItem = e.Item as GridEditFormItem;
if (e.Item is GridDataItem && !e.Item.IsInEditMode)
{
GridDataItem item = (GridDataItem)e.Item;
bool success,deleted;
bool.TryParse(item["deleted"].Text, out success);
if (success)
{
deleted = bool.Parse(item["deleted"].Text);
if (deleted)
{
item.Display = false;
}
}
}
}