2017-01-22 20 views
1

データソースから値を取得するddlSvcEngrという名前のドロップダウンリストがあります。グリッドビューにddlSvcEngrの選択に基づいてデータベースからの結果を表示します。しかし、表示ボタンをクリックするたびにグリッドビューは表示されません。ここでは、コードです:ボタンクリック後にASP.NET GridViewが表示されない

HTML:背後に

<asp:DropDownList ID="ddlSvcEngr" runat="server" DataSourceID="SqlDataSource1" DataTextField="rep_svcengr" DataValueField="rep_svcengr" CssClass="btn btn-default dropdown-toggle" Width="300px" AppendDataBoundItems="true">  
<asp:Button ID="btnView" runat="server" Text="View" CssClass="btn btn-primary" Width="300px" OnClick="btnView_Click" /> 
<asp:GridView ID="gvResults" runat="server" AutoGenerateColumns="False" ShowFooter="True"> 
      <Columns> 
       <asp:BoundField ItemStyle-Width="150px" DataField="rep_svcengr" HeaderText="Service Engineer" > 
        <ItemStyle Width="150px"></ItemStyle> 
      </Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:jasonsvcConnectionString %>" SelectCommand="SELECT [rep_svcengr], [rep_company], [rep_vessel], [rep_wo], [rep_brand], [rep_model], [rep_eqpt], [rep_sn] FROM [reports]"></asp:SqlDataSource> 

コード:

private void bgSvcEngr() 
    { 
     string conString = ConfigurationManager.ConnectionStrings["jasonsvcConnectionString"].ConnectionString; 
     string query = "SELECT rep_svcengr,rep_company,rep_vessel,rep_wo,rep_brand,rep_model,rep_eqpt,rep_sn FROM reports WHERE rep_svcengr='@svcengr'"; 
     SqlCommand cmd = new SqlCommand(query); 
     cmd.Parameters.AddWithValue("@svcengr", ddlSvcEngr.SelectedItem.Value); 
     using (SqlConnection con = new SqlConnection(conString)) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter()) 
      { 
       cmd.Connection = con; 
       sda.SelectCommand = cmd; 
       using (DataSet ds = new DataSet()) 
       { 
        sda.Fill(ds); 
        gvResults.DataSource = ds; 
        gvResults.DataBind(); 
       } 
      } 
     } 
    } 

protected void btnView_Click(object sender, EventArgs e) 
    {    
      bgSvcEngr(); 
    } 

注:毎回私は、コマンドラインからクエリWHERE rep_svcengr='" + ddlSvcEngr.SelectedIndex.ToString() + "'を削除します。 Viewボタンをクリックすると、gridviewが表示されます。

WHEREコマンドをクエリに入力するたびに、gridviewが表示されないのは何が問題になるかわかりません。

+0

'AddWithValue()'問題となることがあります。明示的な型のパラメータを追加する方が良いです。 –

+0

データベースで実行中のクエリをチェックしましたか?あなたはレコードを取得しますか? –

+0

@MuhammadSaqlainはい。私は同じクエリからレコードをチェックしました。それはテーブルを示しています。 @GordonLinoffでも 'AddWithValue()'を使用していないので、gridviewは表示されません。 クエリから 'where'構文を削除すると、' reports'テーブルのすべてのデータが表示されます。 –

答えて

0

は、単一引用符を取り除く:

は交換してください:

WHERE rep_svcengr='@svcengr' 

付:

WHERE [email protected] 

enter image description here

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     SelectByColor(); 
    } 
    private void SelectByColor() 
    { 
     string conString = ConfigurationManager.ConnectionStrings["AdventureWorks2014ConnectionString"].ConnectionString; 
     string query = "SELECT productid, name, color FROM production.product WHERE [email protected]"; 
     SqlCommand cmd = new SqlCommand(query); 
     cmd.Parameters.AddWithValue("@pcolor", DropDownList1.SelectedItem.Value); 
     using (SqlConnection con = new SqlConnection(conString)) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter()) 
      { 
       cmd.Connection = con; 
       sda.SelectCommand = cmd; 
       using (DataSet ds = new DataSet()) 
       { 
        sda.Fill(ds); 
        GridView1.DataSource = ds; 
        GridView1.DataBind(); 
       } 
      } 
     } 
    } 
} 
関連する問題