2017-01-22 13 views
1

Ich habe eine Dropdown-Liste mit dem Namen ddlSvcEngr immer Werte aus der Datenquelle. Ich möchte die Gridview zeigen die Ergebnisse aus der Datenbank basierend auf der Auswahl von ddlSvcEngr. Aber jedes Mal, wenn ich auf die Schaltfläche "Ansicht" klicke, wird keine Gitteransicht angezeigt. Hier ist der Code:ASP.NET Gridview erscheinend nicht nach Knopf klicken

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> 

-Code Behind:

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(); 
    } 

Hinweis: Jedesmal, entferne ich die Zeile WHERE rep_svcengr='" + ddlSvcEngr.SelectedIndex.ToString() + "' von dem Befehl Abfrage. Die Gitteransicht wird nach dem Klicken auf die Schaltfläche "Ansicht" angezeigt.

Ich habe keine Ahnung, was das Problem sein würde, warum die gridview nicht jedes Mal, wenn ich den Befehl WHERE auf die Abfrage gestellt erscheint.

+0

'AddWithValue()' kann problematisch sein. Es ist besser, Parameter mit einem expliziten Typ hinzuzufügen. –

+0

Sie haben die Abfrage in der Datenbank überprüft? Du bekommst Aufzeichnungen? –

+0

@MuhammadSaqlain ja. Ich habe die Datensätze von derselben Abfrage überprüft. Es zeigt die Tabelle. @GordonLinoff noch nicht 'AddWithValue() mit' no gridview erscheint. Aus meiner Kenntnis, alle Daten aus der Tabelle 'reports' zeigen, sobald ich die' where' Syntax aus der Abfrage entfernt. –

Antwort

0

Sie sich von der einfachen Anführungszeichen los:

ersetzen:

WHERE rep_svcengr='@svcengr' 

mit:

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(); 
       } 
      } 
     } 
    } 
} 
Verwandte Themen