Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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回发后丢失WHERE语句_C#_Asp.net_Entity Framework_Entitydatasource - Fatal编程技术网

C# EntityDataSource回发后丢失WHERE语句

C# EntityDataSource回发后丢失WHERE语句,c#,asp.net,entity-framework,entitydatasource,C#,Asp.net,Entity Framework,Entitydatasource,我有一个绑定到此EntityDataSource的GridView: <asp:EntityDataSource ID="lotDetailQuery" runat="server" ViewStateMode="Enabled" ConnectionString="name=encoreEntities" DefaultContainerName="encoreEntities" EnableFlattening="False" EntitySetName="lotde

我有一个绑定到此EntityDataSource的GridView:

<asp:EntityDataSource ID="lotDetailQuery" runat="server" ViewStateMode="Enabled" 
    ConnectionString="name=encoreEntities" DefaultContainerName="encoreEntities"
    EnableFlattening="False" EntitySetName="lotdetails" Include="lot, lot.salesorder" 
    Where="false" OrderBy="it.lotdetaildate">           
    <WhereParameters>
        <asp:Parameter Name="OrderNum" Type="String" />
        <asp:Parameter Name="BoxNum" Type="String" />
        <asp:Parameter Name="SerialNum" Type="String" />
        <asp:Parameter Name="InvoiceNum" Type="String" />
        <asp:ControlParameter Name="DateFrom" ControlID="txtDateFrom" Type="DateTime" />
        <asp:Parameter Name="DateTo" Type="DateTime" />
    </WhereParameters>   
</asp:EntityDataSource></asp:Content>

在codebehind中,我设置了Where参数和Where语句的值。(例如,如果用户搜索BoxNum JLS001,则Where语句设置为“it.BoxNum=@BoxNum”,WhereParam BoxNum设置为JLS001。当用户搜索时,gridview工作正常

当用户使用我提供的删除按钮删除其中一条记录时,就会出现问题。删除后,我尝试使用gridview.DataBind()刷新gridview。回发完成后,gridview为空

我发现,虽然WhereParameters在回发后仍然存在(BoxNum仍然设置为JLS001),但Where语句没有。回发后,该语句与最初加载页面时一样设置为“false”

除了将Where语句写入一个不可见的标签,然后将其复制到EntityDataSource这样的麻烦之外,有没有办法在回发期间保留Where语句的值


或者可能有更好的方法使用EntityFramework的动态查询。我习惯于使用SqlDataSources并将其附加到存储过程并传递参数,这种方法工作得很好。不过,SQL查询正确表的逻辑驻留在存储过程中。这里,逻辑在我的代码中hind.

好吧,除了另一个解决方案,下面是我最后做的事情-我在页面上添加了一个不可见的标签来保存Where语句。在GridView数据绑定期间,我将值写入其中:

lblunitQueryWhere.Text = unitQuery.Where;
在Page_Load中,我从那里读取并更新GridView的数据源:

if (IsPostBack)
            unitQuery.Where = lblunitQueryWhere.Text;

通过这种方式,我可以在回发中保留Where语句和参数。

您可以通过代码设置Where语句和参数。用户第一次单击搜索按钮时,我会在代码中设置它们。修改gridview后,我希望它只需使用相同的Where语句和参数进行更新,但Where语句不会保留他回发邮件。我不想在每次回发邮件时都重建它。