2012-07-19 69 views
0

在代碼隱藏中,我想爲entitydatasource應用動態where子句,但我希望這樣的地方能夠像和不相等。我有這樣的代碼工作,這是相等的我想要一個等價的代碼,以某種方式將其轉換爲Like語句。如何使用WhereParameters和EntityDataSource執行Like類型查詢

的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 
} 

回答

2

在該代碼中你只添加一個參數讀數Jupaol評論後

EntityDataSource1.WhereParameters.Add("Name", TypeCode.String, tbxSearch.Text); 

解決方案,你需要定義你的地方比如比較,是在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 + '%'"; 

它的工作原理

+0

以及我想這樣做在後面的代碼...因爲我需要過濾特定事件的數據源... – rtp 2012-07-19 09:04:15

+0

應用相同的邏輯,因爲'Where'屬性是'string',你可以在後面的代碼中分配where條件,檢查我更新的響應 – Jupaol 2012-07-19 09:08:07

+0

我得到這個錯誤:查詢語法無效。附近標識符'abcd' – rtp 2012-07-19 09:11:03

相關問題