質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

14302閲覧

C# ASP.NETでのドロップダウンリスト・テキストボックスでの絞り込み検索について

mogumogu

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2016/09/21 10:12

C#初心者です。
ASP.NETを使い、物件の検索をドロップダウンリストから選択した内容に応じて行いたいです。
チーム名のドロップダウンを選択して検索ボタンを押したら、選択したチーム名に応じた検索結果を表示。
テキストボックスに文字列を入力して検索ボタンを押したら、入力文字列に応じた検索結果を表示するようにしたいと考えています。

現在、ドロップダウンリストのデータバインドとGridViewのデータソース構成はできたのですが、
ページをロードすると常にGridViewの表がすべて出てしまいます。
ドロップダウンを選択もしくは文字列入力して検索ボタンを押したときだけ、データを表示したいです。どのようにロジックを組めば良いでしょうか?
ご教示のほど、よろしくお願いいたします。

デザイン部分

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>物件検索</title> <style type="text/css"> .auto-style1 { width: 180px; } </style> </head> <body> <form id="form1" runat="server"> <div> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="index.aspx" >プロジェクト管理</asp:HyperLink>:<asp:LoginName ID="loginName" runat="server" /> <asp:LoginStatus ID="loginStatus" runat="server" /> <asp:HyperLink ID="p_input" runat="server" NavigateUrl="pinput.aspx" >物件入力</asp:HyperLink> <asp:HyperLink ID="p_update" runat="server" NavigateUrl="pupdate.aspx" >物件更新</asp:HyperLink> </div><br /> 物件検索 <br /> <div> <table style="width: 100%;"> <tr> <td class="auto-style1">チーム名:</td> <td> <asp:DropDownList ID="Team" runat="server" DataSourceID="SqlDataSource1" DataTextField="NAME" DataValueField="NAME" OnSelectedIndexChanged="Team_SelectedIndexChanged" AutoPostBack="True" AppendDataBoundItems="True"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectManagementConnectionString %>" SelectCommand="SELECT [NAME] FROM [MTEAM]"></asp:SqlDataSource> </td> </tr> <tr> <td class="auto-style1">顧客名:</td> <td> <asp:DropDownList ID="Customer" runat="server" DataSourceID="SqlDataSource2" DataTextField="NAME" DataValueField="NAME" AutoPostBack="True" OnSelectedIndexChanged="Customer_SelectedIndexChanged" AppendDataBoundItems="True"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectManagementConnectionString %>" SelectCommand="SELECT [NAME] FROM [MCUSTOMER]"></asp:SqlDataSource> </td> </tr> <tr> <td class="auto-style1">プロジェクト責任者:</td> <td> <asp:DropDownList ID="Rpsn" runat="server" DataSourceID="SqlDataSource3" DataTextField="NAME" DataValueField="NAME" AutoPostBack="True" OnSelectedIndexChanged="Rpsn_SelectedIndexChanged" AppendDataBoundItems="True"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectManagementConnectionString %>" SelectCommand="SELECT [NAME] FROM [MRES]"></asp:SqlDataSource> </td> </tr> <tr> <td class="auto-style1">プロセス状況:</td> <td> <asp:DropDownList ID="Prcs" runat="server" DataSourceID="SqlDataSource4" DataTextField="NAME" DataValueField="NAME" AutoPostBack="True" OnSelectedIndexChanged="Prcs_SelectedIndexChanged" AppendDataBoundItems="True"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectManagementConnectionString %>" SelectCommand="SELECT [NAME] FROM [MPRCS]"></asp:SqlDataSource> </td> </tr> <tr> <td class="auto-style1">物件コード(部分一致):</td> <td> <asp:TextBox ID="Pcinput" runat="server"></asp:TextBox></td> </tr> <tr> <td class="auto-style1">物件名(部分一致):</td> <td> <asp:TextBox ID="Pninput" runat="server"></asp:TextBox> <input id="Search" type="button" value="検索" /></td> </tr> <tr> <td colspan="2"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="976px" DataKeyNames="物件コード,顧客名" DataSourceID="SqlDataSource6" CellPadding="4" ForeColor="#333333" GridLines="None"> <AlternatingRowStyle BackColor="White" /> <Columns> <asp:BoundField datafield="物件コード" ReadOnly="true" HeaderText="物件コード" SortExpression="物件コード"/> <asp:BoundField datafield="物件名" HeaderText="物件名" SortExpression="物件名"/> <asp:BoundField datafield="顧客名" ReadOnly="True" HeaderText="顧客名" SortExpression="顧客名"/> <asp:BoundField datafield="チーム名" HeaderText="チーム名" SortExpression="チーム名"/> <asp:BoundField datafield="プロジェクト責任者" HeaderText="プロジェクト責任者" SortExpression="プロジェクト責任者"/> <asp:BoundField DataField="プロセス状況" HeaderText="プロセス状況" SortExpression="プロセス状況" /> </Columns> <EditRowStyle BackColor="#2461BF" /> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#EFF3FB" /> <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#F5F7FB" /> <SortedAscendingHeaderStyle BackColor="#6D95E1" /> <SortedDescendingCellStyle BackColor="#E9EBEF" /> <SortedDescendingHeaderStyle BackColor="#4870BE" /> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource6" runat="server" ConnectionString="<%$ ConnectionStrings:ProjectManagementConnectionString %>" SelectCommand="SELECT TPROJECT.PCODE AS 物件コード, TPROJECT.NAME AS 物件名, MCUSTOMER.NAME AS 顧客名, TPROJECT.TEAM AS チーム名, TPROJECT.RPSN AS プロジェクト責任者, TPROJECT.PRCSNAME AS プロセス状況 FROM TPROJECT INNER JOIN MCUSTOMER ON TPROJECT.CCODE = MCUSTOMER.CCODE"></asp:SqlDataSource> <asp:SqlDataSource ID="SqlDataSource5" runat="server"></asp:SqlDataSource> </td> </tr> </table> </div> </form> </body> </html> コード

ロジック部分

using

1using System.Collections.Generic; 2using System.Data.SqlClient; 3using System.Linq; 4using System.Web; 5using System.Web.UI; 6using System.Web.UI.WebControls; 7 8namespace LoginTest 9{ 10 public partial class Psearch : System.Web.UI.Page 11 { 12 //ページロード時の処理 13 protected void Page_Load(object sender, EventArgs e) 14 { 15 if (Team.Text == "チーム名を選択" && Customer.Text == "顧客名を選択" && Rpsn.Text == "プロジェクト責任者を選択" && Prcs.Text == "プロセス状況を選択") 16 { 17 18 } 19 20 21 } 22 23 //チーム名のドロップダウンリストの値を取得 24 protected void Team_SelectedIndexChanged(object sender, EventArgs e) 25 { 26 var team = (DropDownList)sender; 27 team.Text = team.SelectedValue; 28 29 30 } 31 32 //顧客名のドロップダウンリストの値を取得 33 protected void Customer_SelectedIndexChanged(object sender, EventArgs e) 34 { 35 36 var customer = (DropDownList)sender; 37 customer.Text = customer.SelectedValue; 38 } 39 40 //プロジェクト責任者のドロップダウンリストの値を取得 41 protected void Rpsn_SelectedIndexChanged(object sender, EventArgs e) 42 { 43 44 var rpsn = (DropDownList)sender; 45 rpsn.Text = rpsn.SelectedValue; 46 } 47 48 //プロセス状況のドロップダウンリストの値を取得 49 protected void Prcs_SelectedIndexChanged(object sender, EventArgs e) 50 { 51 52 var prcs = (DropDownList)sender; 53 prcs.Text = prcs.SelectedValue; 54 } 55 56 57 //検索ボタンをクリックした時の処理 58 protected void Search_Click(object sender, EventArgs e) 59 { 60 //データベース接続を確立する。 61 string sConnectionString; 62 sConnectionString = @"Data Source=(localdb)\ProjectsV13;Initial Catalog=ProjectManagement;Integrated Security=True"; 63 SqlConnection objConn = new SqlConnection(sConnectionString); 64 objConn.Open(); 65 66 string sqlall = "SELECT TPROJECT.PCODE AS 物件コード, TPROJECT.NAME AS 物件名, MCUSTOMER.CCODE AS 顧客名, TPROJECT.TEAM AS チーム名, TPROJECT.RPSN AS プロジェクト責任者, TPROJECT.PRCSNAME AS プロセス状況 FROM TPROJECT INNER JOIN MCUSTOMER ON TPROJECT.CCODE = MCUSTOMER.CCODE"; 67 SqlCommand com = new SqlCommand(sqlall, objConn); 68 69 SqlDataReader sdr = com.ExecuteReader(); 70 while (sdr.Read() == true) 71 { 72 73 74 } 75 76 objConn.Close(); 77 } 78 79 } 80 81 82 83 } 84 85

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

では最初は GridView は非表示にして[検索ボタン]クリックでポストバックしたら、そのイベントハンドラで表示するようにすればよさそうですが。

【追伸】

コメント欄に書いたつもりでしたが間違って回答欄に書いてしまいました。すみません。

ところで、初期画面で GridView を非表示にする以外は全て期待通り動いていると理解していますが、その理解でいいのですよね? その理解が正しければ上に述べた手段で解決できると思うのですが・・・

投稿2016/09/21 11:53

編集2016/09/21 15:43
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mogumogu

2016/09/22 01:23

ありがとうございます。 grid viewを非表示にして、検索ボタンクリックでポストバックしたら結果表示する流れで合っています。 いいえ、検索の機能は全然実装できていません。選択したドロップダウンリストから値を取得してその値で検索するには、取得した値をどうやって検索クエリに渡せば良いのでしょうか?
mogumogu

2016/09/23 02:34

ありがとうございます。ドロップダウンリストの絞り込みをご紹介いただいたリンクで実装できそうです! 参考にして作ってみます。
guest

0

コードは読んでなくてすみませんが、その前に確認させてください。

ドロップダウンを選択もしくは文字列入力して検索ボタンを押したときだけ、データを表示したいです。

ちょっと安易な方法かも知れませんが、初期画面では Control.Visible プロパティ を false にしておき、ドロップダウンを選択もしくは文字列入力して検索ボタンを押しポストバックされた時に GridView.Visible を true にするというのはどうでしょう?

それがダメなら、どういうところが問題か書いてください。

投稿2016/09/21 10:31

編集2016/09/21 10:32
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mogumogu

2016/09/21 11:44

はい。初期状態でgridviewは非表示で、ドロップダウンもしくは文字列入力後に検索ボタンクリックされたらgridviewの表示をさせるという処理で問題ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問