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
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/22 01:23
退会済みユーザー
2016/09/22 01:42
2016/09/23 02:34