簡體   English   中英

asp.net中的多個搜索文本框

[英]multiple search textboxes in asp.net

我的系統中有多個文本框和一個下拉列表,並且我正在使用“查詢”構建器從數據庫(SQL Server)的多個表中選擇數據,並將其顯示在網格視圖中

建議ID :(文本框)人員ID :(文本框)狀態:(下拉列表)人員名稱:(文本框)

....................................

我希望搜索結果通過輸入一個或多個字段來起作用。 問題是,當我在互聯網上瀏覽以測試查詢是否有效時,我發現它僅通過輸入所有字段即可起作用。

這是在查詢生成器中生成的查詢(Visual Studio 2010)

SELECT
SuggestionDetail.SuggestionDescription, SuggestionDetail.SuggestionID,
SuggestionDetail.DateOfSubmission, Employee.EmployeeID, Employee.City,
Employee.EmployeeName, Category.CategoryName, SuggestionStatusDetail.DateOfLastUpdate,
SuggestionStatus.StatusName

FROM
Employee

INNER JOIN
SuggestionDetail

ON
Employee.EmployeeID = SuggestionDetail.EmployeeID

INNER JOIN
Category

ON
SuggestionDetail.CategoryID = Category.CategoryID

INNER JOIN
SuggestionStatusDetail

ON
SuggestionDetail.SuggestionID = SuggestionStatusDetail.SuggestionID

INNER JOIN
SuggestionStatus

ON
SuggestionStatusDetail.StatusID = SuggestionStatus.StatusID

WHERE
(Employee.EmployeeName LIKE N'%' + @empname + N'%')
OR
(Employee.EmployeeID LIKE '%' + @empid + '%')
OR
(SuggestionDetail.SuggestionID LIKE '%' + @txtDocID + '%')
OR
(SuggestionStatus.StatusName LIKE N'%' + @StatusName + N'%')

這是在HTML內部生成的代碼:

     <asp:GridView ID="GridView1" runat="server" BackColor="White" class="GridView"
         BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" 
         EnableModelValidation="True" ForeColor="Black" GridLines="Vertical" 
         AutoGenerateColumns="False" 
         DataSourceID="SqlDataSource2">
         <AlternatingRowStyle BackColor="White" />
         <Columns>
             <asp:BoundField DataField="SuggestionDescription" HeaderText="SuggestionDescription" 
                 SortExpression="SuggestionDescription" />
             <asp:BoundField DataField="SuugestionID" HeaderText="SuggestionID" 
                 InsertVisible="False" ReadOnly="True" SortExpression="SuggestionID" />
             <asp:BoundField DataField="DateOfSubmission" HeaderText="DateOfSubmission" 
                 SortExpression="DateOfSubmission" />
             <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" 
                 SortExpression="EmployeeID" />
             <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
             <asp:BoundField DataField="EmployeeName" HeaderText="EmployeeName" 
                 SortExpression="EmployeeName" />
             <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" 
                 SortExpression="CategoryName" />
             <asp:BoundField DataField="DateOfLastUpdate" HeaderText="DateOfLastUpdate" 
                 SortExpression="DateOfLastUpdate" />
             <asp:BoundField DataField="StatusName" HeaderText="StatusName" 
                 SortExpression="StatusName" />
         </Columns>

請任何幫助,我仍然是Visual Studio中的新手。

     <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
         ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 

         SelectCommand="SELECT SuggestionDetail.SuggestionDescription, SuggestionDetail.SuggestionID, SuggestionDetail.DateOfSubmission, Employee.EmployeeID, Employee.City, Employee.EmployeeName, Category.CategoryName, SuggestionStatusDetail.DateOfLastUpdate, SuggestionStatus.StatusName FROM Employee INNER JOIN SuggestionDetail ON Employee.EmployeeID = SuggestionDetail.EmployeeID INNER JOIN Category ON SuggestionDetail.CategoryID = Category.CategoryID INNER JOIN SuggestionStatusDetail ON SuggestionDetail.SuggestionID = SuggestionStatusDetail.SuggestionID INNER JOIN SuggestionStatus ON SuggestionStatusDetail.StatusID = SuggestionStatus.StatusID WHERE (Employee.EmployeeName LIKE N'%' + @empname + N'%') OR (Employee.EmployeeID LIKE '%' + @empid + '%') OR (SuggestionDetail.SuggestionID LIKE '%' + @txtDocID + '%') OR (SuggestionStatus.StatusName LIKE N'%' + @StatusName + N'%')">
         <SelectParameters>
             <asp:ControlParameter ControlID="txtStaffName" Name="empname" 
                 PropertyName="Text" />
             <asp:ControlParameter ControlID="txtStaffID" Name="empid" PropertyName="Text" />
             <asp:ControlParameter ControlID="txtDocID" Name="txtDocID" 
                 PropertyName="Text" />
             <asp:ControlParameter ControlID="ddStatus" Name="StatusName" 
                 PropertyName="SelectedValue" />
         </SelectParameters>
     </asp:SqlDataSource>

如果聯接和其他事情運行良好,那么我在where子句中更改了某些字段。 當所有參數為空/空白(如可為空)時,它會返回整個結果,並根據任一參數為空/空白返回過濾結果。

CREATE/ALTER STOREDPROCEDURE SP_NAME
@empname varchar(50) = NULL,
@empid int = NULL,
@txtDocID  int = NULL,
@StatusName varchar(50) = NULL
AS
BEGINE
    SELECT
    SuggestionDetail.SuggestionDescription, SuggestionDetail.SuggestionID,
    SuggestionDetail.DateOfSubmission, Employee.EmployeeID, Employee.City,
    Employee.EmployeeName, Category.CategoryName, SuggestionStatusDetail.DateOfLastUpdate,
    SuggestionStatus.StatusName

    FROM
    Employee

    INNER JOIN
    SuggestionDetail

    ON
    Employee.EmployeeID = SuggestionDetail.EmployeeID

    INNER JOIN
    Category

    ON
    SuggestionDetail.CategoryID = Category.CategoryID

    INNER JOIN
    SuggestionStatusDetail

    ON
    SuggestionDetail.SuggestionID = SuggestionStatusDetail.SuggestionID

    INNER JOIN
    SuggestionStatus

    ON
    SuggestionStatusDetail.StatusID = SuggestionStatus.StatusID

    WHERE
    (Employee.EmployeeName LIKE N'%' + @empname + N'%' OR @empname IS NULL)
    OR
    (Employee.EmployeeID LIKE '%' + @empid + '%' OR @empid IS NULL)
    OR
    (SuggestionDetail.SuggestionID LIKE '%' + @txtDocID + '%' OR @txtDocID IS NULL)
    OR
    (SuggestionStatus.StatusName LIKE N'%' + @StatusName + N'%' OR @StatusName IS NULL)
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM