Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntityDataSource筛选_C#_Asp.net_Telerik Grid_Entitydatasource - Fatal编程技术网

C# EntityDataSource筛选

C# EntityDataSource筛选,c#,asp.net,telerik-grid,entitydatasource,C#,Asp.net,Telerik Grid,Entitydatasource,这有点痛苦,我觉得这应该很容易 我有一个EntityDataSource: <asp:EntityDataSource ID="TaskDataSource" runat="server" ConnectionString="name=ScheduleEntities" DefaultContainerName="ScheduleEntities" EnableFlattening="False" EntitySetName="TaskItems" EnableInsert="True"

这有点痛苦,我觉得这应该很容易

我有一个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工作正常,一切正常……我只是无法将其过滤。

您需要在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">

我通过在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>

这是逐字记录吗?it.deleted可能需要是it.DeletedVerbatim。数据库中的列已被删除,我已尝试了这两种方法。将False更改为False,然后查看结果。没有骰子,这也不起作用,使用deleted或delete,您可以根据需要对实体数据源的QueryCreated事件进行筛选
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;
            }
        }
    }
}