在代码隐藏中,我想为entitydatasource应用动态where子句,但我希望在哪里可以和不相等。我有这个代码工作相同我想要一个等价代码,以某种方式将其转换为Like语句。
EntityDataSource1.WhereParameters.Add("Name", TypeCode.String, tbxSearch.Text);
阅读Jupaol评论后的解决方案:
的Xaml:
<WhereParameters>
<asp:ControlParameter ControlID="tbxSearch" Name="Name" Type="String" />
</WhereParameters>
代码背后:(在加载事件中)
if (string.IsNullOrEmpty(tbxSearch.Text))
{
this.EntityDataSource1.Where = "1=1"; //fetch all data if empty
}
else
{
this.EntityDataSource1.Where = "it.Name like '%' + @Name + '%'"; //filter
}
答案 0 :(得分:2)
在该代码中,您只是添加一个参数,您需要定义之类比较的位置在where子句中
您发布的代码可以翻译成:
<asp:EntityDataSource runat="server" ID="eds"
.....
Where="it.fname like '%' + @Name + '%'"
<WhereParameters>
<asp:ControlParameter ControlID="tbxSearch" Name="Name" DefaultValue="" />
</WhereParameters>
添加代码背后的位置:
this.eds.Where = "it.fname like '%' + @Name + '%'";
<强> EDIT1:强>
出于某种原因,如果我将参数声明放在你的(在代码中),它就不起作用,但是如果我将参数放在标记中,如下所示:
<WhereParameters>
<asp:ControlParameter ControlID="tbxSearch" Name="Name" Type="String" DefaultValue="" />
</WhereParameters>
并在Page_Load
this.eds.Where = "it.fname like '%' + @Name + '%'";
它有效