我有一个在许多地方使用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)之前,必须在代码隐藏中将*更改为%。