EntityDataSource 在查询中将 * 替换为 % 通配符

2024-04-26

我有一个在很多地方使用 EntityDataSource 的应用程序。

在 EDS 中,我根据 TextBox 中的用户输入手动构建Where 子句。

我希望用户在查询数据时能够输入“*”(星号)而不是“%”。

有没有像使用 Entity SQL 或 EDS 本身一样简单的方法来进行搜索/替换?我知道我实际上可以在输入数据后更改文本框,但是当用户看到他的文本从 * 更改为 % 时,我认为他不会理解。

我尝试过使用 T-SQL Replace 命令并执行如下操作:

<asp:EntityDataSource ID="EDSParts" runat="server" 
    ConnectionString="name=TTEntities" DefaultContainerName="TTEntities"
    EnableFlattening="False" EntitySetName="Parts"
    OrderBy="it.ID DESC"
    Where ="(CASE
                WHEN (@PartNumber IS NOT NULL) THEN
                    it.[Number] LIKE REPLACE(@PartNumber, "*", "%")
                ELSE
                    it.[ID] IS NOT NULL
            END)">
    <WhereParameters>
        <asp:ControlParameter Name="PartNumber" Type="String"
            ControlID="txtPartNumberQuery" PropertyName="Text" />
    </WhereParameters>
</asp:EntityDataSource>

但我收到“服务器标记格式不正确”消息。我在 Entity SQL 参考中找不到等效的“替换”函数......

有任何想法吗?


您可以处理页面回发并修改 txtPartNumberQuery 的内容。 EntityDataSource 只能使用 % (因为它构建 ESQL 查询),因此在执行数据绑定之前,您必须在代码隐藏中将 * 更改为 %。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EntityDataSource 在查询中将 * 替换为 % 通配符 的相关文章

随机推荐