2016-07-07 14 views
1

ユーザーは、テキストボックスで検索する項目を入力してからボタンを押して検索することができる検索機能を開発しました。 検索機能が既に働いているが、1つのオプションのみ(ContractNo)のために、今私は、ユーザーが検索するためのより多くのオプションを追加するには、ドロップダウンリストを追加したい(追加:EmpIDを、TrainingCodeなど)をここにASP.NETの検索機能のオプションのドロップダウンリストを使用

がありますASPXのコード:(はい、私は唯一の私は必要だと思うのコードを含む)

<div id="contentarea"> 
      <p> Search Employee ID, Training Code, Contract Number<br/> 
       <asp:DropDownList ID="DropDownList1" runat="server"> 
        <asp:ListItem>Contract Number</asp:ListItem> 
        <asp:ListItem>Training Code</asp:ListItem> 
        <asp:ListItem>Employee ID</asp:ListItem> 
       </asp:DropDownList> 
       <asp:TextBox ID="searchText" runat="server" Height="16px" Width="146px"></asp:TextBox> 
       <asp:Button ID="ButtonSearch" runat="server" Text="Search" OnClick="ButtonSearch_Click" /> 
       <asp:Button ID="ButtonClear" runat="server" Text="Clear" OnClick="ButtonClear_Click" /> 
      </p> 
      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="TrainingCode" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display." ForeColor="#333333" GridLines="None"> 
       <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
       <Columns> 
        </a> 
         </Itemtemplate> 
        </asp:TemplateField>--%> 
        <asp:TemplateField HeaderText="ContractNo" SortExpression="ContractNo"> 
         <ItemTemplate> 
          <asp:Label ID="LabelContractNo" Text='<% #HighlightText(Eval("ContractNo").ToString()) %>' runat="server"></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="TrainingCode" SortExpression="TrainingCode"> 
         <ItemTemplate> 
          <asp:Label ID="LabelTrainingCode" runat="server" Text='<%# Eval("TrainingCode") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="EmpID" SortExpression="EmpID"> 
         <ItemTemplate> 
          <asp:Label ID="LabelEmpID" runat="server" Text='<%# Eval("EmpID") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="ContractDate" SortExpression="ContractDate"> 
         <ItemTemplate> 
          <asp:Label ID="LabelContractDate" runat="server" Text='<%# Eval("ContractDate") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="ContractDuration" SortExpression="ContractDuration"> 
         <ItemTemplate> 
          <asp:Label ID="LabelContractDuration" runat="server" Text='<%# Eval("ContractDuration") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="ServiceStart" SortExpression="ServiceStart"> 
         <ItemTemplate> 
          <asp:Label ID="LabelServiceStart" runat="server" Text='<%# Eval("ServiceStart") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="ContractValue" SortExpression="ContractValue"> 
         <ItemTemplate> 
          <asp:Label ID="LabelContractValue" runat="server" Text='<%# Eval("ContractValue") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Served" SortExpression="Served"> 
         <ItemTemplate> 
          <asp:Label ID="LabelServed" runat="server" Text='<%# Bind("Served") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 

      </asp:GridView> 
      <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:dbx %>" DeleteCommand="DELETE FROM [SCHOLARSHIPCONTRACT] WHERE [TrainingCode] = @TrainingCode" InsertCommand="INSERT INTO [SCHOLARSHIPCONTRACT] ([ContractNo], [TrainingCode], [EmpID], [ContractDate], [ContractDuration], [ServiceStart], [ContractValue], [Served]) VALUES (@ContractNo, @TrainingCode, @EmpID, @ContractDate, @ContractDuration, @ServiceStart, @ContractValue, @Served)" SelectCommand="SELECT * FROM [SCHOLARSHIPCONTRACT]" UpdateCommand="UPDATE [SCHOLARSHIPCONTRACT] SET [ContractNo] = @ContractNo, [EmpID] = @EmpID, [ContractDate] = @ContractDate, [ContractDuration] = @ContractDuration, [ServiceStart] = @ServiceStart, [ContractValue] = @ContractValue, [Served] = @Served WHERE [TrainingCode] = @TrainingCode" FilterExpression="ContractNo '%{0}%'"> 

       <FilterParameters> 
        <asp:ControlParameter Name="ContractNo" ControlID="searchText" PropertyName="Text"/> 
       </FilterParameters> 
</asp:SqlDataSource> 

とFULL C#のバックエンドのコード:

private string SearchString = ""; 

protected void Page_Load(object sender, EventArgs e) 
{ 
} 

public string HighlightText(string InputText) 
{ 
    string Search_str = searchText.Text; 
    Regex RegExp = new Regex(Search_str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase); 
    return RegExp.Replace(InputText, new MatchEvaluator(ReplaceKeywords)); 
} 

public string ReplaceKeywords(Match m) //this is just to highlight the item searched 
{ 
    return ("<span class=highlight>" + m.Value + "</span>"); 
} 


protected void ButtonSearch_Click(object sender, EventArgs e) 
{ 
    SearchString = searchText.Text; 
} 

protected void ButtonClear_Click(object sender, EventArgs e) 
{ 
    searchText.Text = ""; 
    SearchString = ""; 
    GridView1.DataBind(); 

} 

ここでif文を追加すると思いますか? FilterParametersについてlike

<% if (DropDownList1.text == "EmpID"){} 

でもわかりません。他の方法をお勧めしますか?プログラムの他のコードが必要な場合は教えてください。事前にありがとう

+1

C#コードであります既存の問題を明確にすることができますか?達成したいことは何ですか?グリッドビューのコードを最初から最後まで置くと、検索のクエリはどこにありますか? – amal50

+0

@ amal50質問は要求通りに編集され、aspxのフルコードが追加されました。私はちょうどドロップダウンリストのコードを構築するのに役立つ必要があります。たとえば、EmpIDを選択した場合、ユーザーはEmpIDの例:20134を入力し、検索ボタンをクリックすると、結果がgridviewに表示されます。どこでcodexを置くか考えている、aspxやC#で。助言がありますか? – wolfQueen

答えて

0

一般的なオプションを使用してみてください。すべてのタイプ(EmpID、TrainingCode)を表示するには、ドロップダウンを使用します。タイプ選択に基づいて、テキストボックスに入力されたテキストでフィルターをかけるように切り替えます。

SearchString = searchText.Text; スイッチ(種類) { ケースEmpID: DoOperation(); 休憩。 case TrainingCode: DoOperation(); 休憩。 }

+0

あなたの提案に感謝します、私はそれを考えようとします。 – wolfQueen

0

ここで解決策は、私のコンピュータでうまくいきます。これがあなたが達成したいと思っていることです。私は、コード内のいくつかのコメントを入れて、彼らにaspxページで

を読んで、

<div id="contentarea"> 
     <p> Search Employee ID, Training Code, Contract Number<br/> 
      <asp:DropDownList ID="DropDownList1" runat="server"> 
       <asp:ListItem Value="ContractNo">Contract Number</asp:ListItem> 
       <asp:ListItem Value="TrainingCode">Training Code</asp:ListItem> 
       <asp:ListItem Value="EmpID">Employee ID</asp:ListItem> 
      </asp:DropDownList> 
      <asp:TextBox ID="searchText" runat="server" Height="16px" Width="146px"></asp:TextBox> 
      <asp:Button ID="ButtonSearch" runat="server" Text="Search" OnClick="ButtonSearch_Click" /> 
      <asp:Button ID="ButtonClear" runat="server" Text="Clear" OnClick="ButtonClear_Click" /> 
     </p>    

<asp:GridView ID="GridView1" runat="server"></asp:GridView> 
</div> 

をこのコードを入れて、これはあなたの質問が明確でないaspx.csに

private string SearchString = ""; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    public string HighlightText(string InputText) 
    { 
     string Search_str = searchText.Text; 
     Regex RegExp = new Regex(Search_str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase); 
     return RegExp.Replace(InputText, new MatchEvaluator(ReplaceKeywords)); 
    } 

    public string ReplaceKeywords(Match m) //this is just to highlight the item searched 
    { 
     return ("<span class=highlight>" + m.Value + "</span>"); 
    } 

    private DataTable GetData(string query) 
    { 
     // Read connection string from web.config file , Important, change the 
     //ConnectionStrings name here (testConnectionString) 
     // and replace it with your connection name , you can find it in web.config file 
     // in <connectionStrings> tag , you find it after this tag <add name=" 

     string CS = ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(CS)) 
     { 
      SqlDataAdapter sda = new SqlDataAdapter(query, con); 

      using (DataTable dt = new DataTable()) 
      { 
       con.Open(); 
       sda.Fill(dt); 
       return dt; 
      } 
     } 
    } 

    protected void ButtonSearch_Click(object sender, EventArgs e) 
    { 
      SearchString = searchText.Text; 
      string columnName = DropDownList1.SelectedValue; 
      string searchSQL = "SELECT * FROM [SCHOLARSHIPCONTRACT] WHERE " + columnName + "= '" + SearchString + "'"; 


     //bind the SCHOLARSHIPCONTRACT table data into GridView1 

     DataTable dt = this.GetData(searchSQL); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 

    protected void ButtonClear_Click(object sender, EventArgs e) 
    { 
     searchText.Text = ""; 
     SearchString = ""; 
     GridView1.DataBind(); 

    }