2013-06-24 23 views
0

我想爲我的aspx頁面添加一個ALL搜索功能。問題是我不知道如何正確地做到這一點。這是據我可以走了,這裏的後面的代碼:如何在asp.net中包含「全部」搜索選項?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     DataTable dtTransactionCategory = clsTransactionCategory.GetTransactionCategory(Helper.LogID, Helper.OrgID, Helper.SiteID, 0, string.Empty); 
     ddlTransactionCategoryDesc.DataSource = dtTransactionCategory; 
     ddlTransactionCategoryDesc.DataTextField = "TransactionCategoryDesc"; 
     ddlTransactionCategoryDesc.DataValueField = "TransactionCategoryID"; 
     ddlTransactionCategoryDesc.DataBind(); 
     ddlTransactionCategoryDesc.Items.Insert(0, new ListItem("All")); 

     ddlTransactionCategoryInput.DataSource = dtTransactionCategory; 
     ddlTransactionCategoryInput.DataTextField = "TransactionCategoryDesc"; 
     ddlTransactionCategoryInput.DataValueField = "TransactionCategoryID"; 
     ddlTransactionCategoryInput.DataBind(); 

     logID = CommonFunctions.StringToInt(Session[Constants.SessionLogID].ToString()); 
     orgID = 1; 
     siteID = 1; 
     ddlTransactionCategoryDesc.SelectedValue = Convert.ToString(ddlTransactionCategoryDesc); 
     txtTransactionDesc.Text = string.Empty; 
     BindData(); 
    } 
} 

和存儲過程,應該它需要:

ALTER PROC [dbo].[spMSTransaction_Get] 
@OrgID INT, 
@SiteID INT, 
@TransactionCategoryID INT, 
@TransactionCategoryDesc varchar (300), 
@TransactionDesc varchar(300) 
AS 
    SET NOCOUNT ON 
    SELECT mst.[OrgID], 
      mst.[SiteID], 
      mst.[TransactionID], 
      mst.[TransactionCategoryID], 
      mstc.[TransactionCategoryDesc], 
      mst.[TransactionDesc], 
      mst.[IsActive], 
      [master].dbo.fnConvertUTCToLocalTimeZone (mst.[CreatedDate]) as [CreatedDate], 
      mst.[CreatedBy], 
      [master].dbo.fnConvertUTCToLocalTimeZone (mst.[ModifiedDate]) as [ModifiedDate], 
      mst.[ModifiedBy] 
    FROM [dbo].[MSTransaction] AS mst 
    INNER JOIN [dbo].[MSTransactionCategory] AS mstc 
    ON mst.OrgID = mstc.OrgID AND mst.SiteID = mstc.SiteID AND mst.TransactionCategoryID = mstc.TransactionCategoryID 
    WHERE (mst.[OrgID] = @OrgID OR @OrgID = 0) 
      AND (mst.[SiteID] = @SiteID OR @SiteID = 0) 
      AND (mst.[TransactionCategoryID] = @TransactionCategoryID OR @TransactionCategoryID = 0) 
      AND (mst.[TransactionDesc] LIKE '%' + @TransactionDesc + '%') 
      AND (mst.[isActive] = 1) 

我已經把ddlTransactionCategoryDesc.Items.Insert(0, new ListItem("All"));但它返回了一個錯誤:

Input string was not in a correct format.

任何想法我需要修復,我應該怎麼做才能使ALL搜索功能?謝謝。

回答

1

根據您的存儲過程,@TransactionCategoryIDINT。添加ALL名單將要求您改用以下:

ddlTransactionCategoryDesc.Items.Insert(0, new ListItem("All", "0")); 

這將使ALL值是一個INT。您目前擁有的 - ListItem("All")會自動將值的類型更改爲字符串。執行後檢查下拉列表,它將顯示值爲All,但不能傳遞到存儲過程需要的INT

+0

我試過你的解決方案,它會拋出一個錯誤:**'不能從'int'轉換爲'string''**任何想法? –

+0

使用ListItem(「All」,「0」)。我錯誤地忘記將值設置爲一個字符串,這是ListItem的要求。我也會編輯答案。 – SollyM

+0

作品魅力(+1),謝謝! –

相關問題