[英]Add WhereParameters to LinqDataSource in Selecting event
我有一個使用LinqDataSource作為數據源的轉發器。 輸入查詢字符串時,我想過濾結果,但是僅當輸入查詢字符串時。 如果沒有查詢字符串,則不應過濾結果,而應返回所有結果。
我試圖在LinqDataSource的Selecting事件中將WhereParameter添加到我的LinqDataSource中,但是它不起作用。 這是我的代碼:
protected void ldsImages_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
if (Request.QueryString["id"] != null)
{
e.WhereParameters.Add("ImageTypeID", Request.QueryString["id"]);
}
}
將一個onload事件添加到LinqDataSource來處理LinqDataSource _ * _ Load()似乎可以使您執行以下操作:
protected void ldsAssets_Draft_Load(object sender, EventArgs e) {
string Where_Statement = " Planner_ID == @Planner_ID";
ldsAssets_Draft.WhereParameters.Add("Planner_ID", System.Data.DbType.Int32, User_ID.ToString());
if (this._DraftOrderStatus != BusinessLogic.DraftOrderStatus.All) {
Where_Statement += " AND Status_ID == @Status_ID";
ldsAssets_Draft.WhereParameters.Add("Status_ID", System.Data.DbType.Int32, ((int)this._DraftOrderStatus).ToString());
}
ldsAssets_Draft.Where = Where_Statement;
}
由於它是在對象的負載而不是選擇上加載的,因此您仍然可以在沒有太多代碼的情況下使用對象。
您確定Request.QueryString [“ id”]的值不為null嗎?
您是否在LinqDataSource上將AutoGenerateWhereClause屬性設置為“ true”?
請仔細閱讀WhereParameters文檔頁面的“ 備注”部分 。
我從來沒有使用過LinqDataSource,但是您不能查詢顯示的結果嗎? (從站點提取代碼):
protected void LinqDataSource_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
var cities = from city in citiesArray
where city.CompareTo("B") > 0
select city;
e.Result = cities;
}
因此,您將遇到以下情況:
protected void LinqDataSource_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
if(Request.QueryString["id"] != null)
{
var myImage = from img in imageSource
where img.ID == Request.QueryString["id"]
select img;
e.Result = myImage;
}
else
{
e.Result = imageSource;
}
}
需要注意的幾件事。 首先,這是未經測試的:D。 其次,如果您的ID是整數,請不要忘記將查詢字符串轉換為整數。 最后,您應該在使用查詢字符串之前對其進行清理。 盡管在這里可能不是主要問題,但這是很好的實踐。
在LinqDataSource
的標記中,您仍然需要在asp:LinqDataSource
標記的Where
屬性中聲明參數。
例:
<asp:LinqDataSource ID="LDS_Images" runat="server"
ContextTypeName="DataContext" TableName="ImagesTable"
Where="ImageTypeID == @ImageTypeID ...>
...
</asp:LinqDataSource>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.