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

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

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

使用实体SQL或EDS本身进行搜索/替换是否容易?我知道实际上可以在输入数据后更改TextBox,但是当用户看到他的文本从*更改为%时,我认为他不会理解。

我尝试使用T-SQL替换命令并执行以下操作:

<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查询),因此在执行数据绑定(bind)之前,必须在代码隐藏中将*更改为%。

10-07 18:02