2016-06-17 4 views
1

Ich habe eine gridview. Ich möchte QUERY RESULT in gridview Header (Spalten) dynamisch anzeigen.Header zeigt basierend auf SQL-QUERY. Hier ist mein SQL-QUERY
USE db_compiler SELECT Column_Name FROM tbl_field WHERE Table_Name='pak' Zum Beispiel es diese Rückkehr Reihen id, name, city dann i in gridview Header zu diesen Shows werden sollen. Wie kann ich das tun? ASPX:Wie Header-Spalten in Gridview basierend auf SQL-Abfrage hinzufügen? ASP.NET C#

<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server"> 
    <form id="form" runat="server"> 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" 
      onrowdatabound="GridView1_RowDataBound"> 
     </asp:GridView> 
     <asp:Button ID="Button1" runat="server" OnClick="load" Text="Button" /> 
    </form> 
</asp:Content> 

aspx.cs

public void load(object sender, EventArgs e) 
{ 
    //string tbl_name = Session["value"].ToString(); 
    //string tbl_name = "new"; 
    string query = "USE db_compiler SELECT Column_Name FROM tbl_field WHERE Table_Name='pak'"; 
    SqlCommand cmd = new SqlCommand(query, cnn); 
    DataTable dt = new DataTable(); 
    SqlDataAdapter adp = new SqlDataAdapter(cmd); 
    DataTable table = new DataTable(); 
    cnn.Open(); 
    cmd.ExecuteNonQuery(); 
    adp.Fill(dt); 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
    cnn.Close(); 
} 

Antwort

1

Das Standardverhalten, wenn Sie verwenden AutoGenerateColumns="true" ist die Spaltennamen aus den Daten source.If es abzurufen ist nicht die Spaltennamen zeigt, vielleicht ist es etwas falsch mit Ihre SQL-Abfrage. Der folgende Code funktioniert:

-Code hinter:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
     this.GetData(); 
} 

private void GetData() 
{ 
    var table = new DataTable(); 
    string connectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; 

    using (var connection = new SqlConnection(connectionString)) 
    { 
     using (var command = new SqlCommand("SELECT ID, City FROM Cities", connection)) 
     { 
      using (var a = new SqlDataAdapter(command)) 
      { 
       connection.Open(); 
       a.Fill(table); 
       connection.Close(); 
      } 
     } 
    } 
    GridView1.DataSource = table; 
    GridView1.DataBind(); 
} 

.ASPX:

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

Ausgang:

Dynamically display GridView column headers

+0

Danke für die Antwort. Aber Sie können meine Frage nicht verstehen. Tatsächlich erstelle ich 'SQL-EDITOR' und wir wissen nicht, wie viele Ergebnisse von sql query.Actaully kommen, es ist der Spaltenname, den der Benutzer in table.so i erstellt hat will von dieser Abfrage 'USE db_compiler SELECT Spaltenname FROM tbl_field WHERE Tabellenname = 'pak'" 'diese Abfrage kann 5 Ergebnis oder 10 Ergebnis oder kann Ergebnis 1 b1.Es kommt auf Ergebnis.und automatisch Header-Header nach Abfrage.Aber Sie stellen mir eine Abfrage zur Verfügung, in der Sie 'SELECT ID, City FROM Cities' verwenden. – Hameed

+0

Ich möchte in dieser Form ausgeben [LINK] (http://i.imgur.com/6vlVo3I.jpg) und hier ist meine SQL-Tabelle [SQL- IMG] (http://i.imgur.com/DtIsha8.png) – Hameed

+0

Ihre SQL-Anweisung ist nicht gültig - SELECT Column_Name VON tbl_field WHERE Table_Name = 'pak' –

Verwandte Themen