2013-06-21 53 views
0

我需要將我的SQL域綁定到我的Gridview列。我之前做過這樣的工作,它工作的很好,但我忘記了如何做到這一點,所以我讓ASP.NET AutoGenerate列和它的工作,現在我想控制數據綁定,下面是我的代碼和我的Gridview。 ..任何援助將不勝感激。手動綁定數據到Gridview

protected void Page_Load(object sender, EventArgs e) 
     { 
      SqlConnection conn = new SqlConnection(Sitecore.Configuration.Settings.GetConnectionString("feedback")); 
      SqlCommand cmd = new SqlCommand("select * from fb_results", conn); 
      DataSet ds = new DataSet(); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(ds); 
      GridView1.DataSource = ds; 
      GridView1.DataBind(); 

      conn.Close(); 
     } 

的GridView:

<head id="Head1" runat="server"> 
    <title>Feedback</title> 
</head> 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="rpt_login" HeaderText="User Id" /> 
     <asp:BoundField DataField="fb_url" HeaderText="URL___" /> 
     <asp:BoundField DataField="fb_response" HeaderText="Answer: Did you find what you were looking for?" /> 
     <asp:BoundField DataField="fb_noResponse" HeaderText="No Response or Ignore" /> 
     <asp:BoundField DataField="fb_date" HeaderText="Date" /> 
     <asp:BoundField DataField="fb_serviceCall" HeaderText="Prevented Service Call" /> 
     <asp:BoundField DataField="fb_partsShipment" HeaderText="Prevented Parts Shipment" /> 
     <asp:BoundField DataField="fb_warranty" HeaderText="Under Warranty" /> 
     <asp:BoundField DataField="fb_cancel" HeaderText="Cancelled" /> 
     <asp:BoundField DataField="fb_none" HeaderText="None of the Above" /> 
    </Columns> 
</asp:GridView> 
+0

那麼你真正的問題是什麼? –

+0

對不起羅素...我想關閉AutoGenerateColumns,但我忘記了如何在我的代碼中編寫代碼來綁定Gridview中的列。 –

+0

只是爲了確認:你想要的只是你已經列出的BoundFields顯示(因爲在查詢有更多的列,並且他們都列出目前)? –

回答

4

確定。所以,關於評論:

這是我的個人經驗。我不得不返回此SQL查詢:

|-----------------------------------------------| 
|Column 1  |Column 2  |Column 3  | 
|---------------|---------------|---------------| 
|"c1foor1bar" |"c2foor1bar" |"c3foor1bar" | 
|"c1foor2bar" |"c2foor2bar" |"c3foor2bar" | 
|"c1foor3bar" |"c2foor3bar" |"c3foor3bar" | 
|---------------|---------------|---------------| 

我的aspx頁面是這樣的:

<asp:GridView runat="server" id="GridView1" AutoGenerateColumns="false"> 
    <asp:BoundField runat="server" DataField="strFirst"></asp:BoundField> 
    <asp:BoundField runat="server" DataField="strLast"></asp:BoundField> 
</asp:GridView> 

我的頁面加載是這樣的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(<the info>); 
    SqlCommand cmd = new SqlCommand("SELECT * FROM fb_results", conn); 
    DataTable dt = new DataTable(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dt); 
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 

    conn.Close(); 
} 

有兩個問題。首先,我的專欄不是一樣的。我可以很容易地改變它們,但它們確實代表了不同的數據,所以我不想這樣做。其次,我帶來了太多的數據。我的解決辦法是重建表:

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(<the info>); 
    SqlCommand cmd = new SqlCommand("SELECT * FROM fb_results", conn); 
    DataTable dt = new DataTable(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dt); 

    DataTable newTable = createDataTableTemplate(); 
    foreach (DataRow dr in dt.Rows) { 
     DataRow newRow = newTable.NewRoW(); 

     newRow["strFirst"] = SomeOperation((String) dr["Column 1"]); 
     newRow["strLast"] = SomeOtherOperation((String) dr["Column 2"]); 

     newTable.Rows.Add (newRow); 
    } 

    GridView1.DataSource = newTable; 
    GridView1.DataBind(); 

    conn.Close(); 
} 

private DataTable createDataTableTemplate() 
{ 
    DataTable table = new DataTable("Table Title"); 

    DataColumn col1 = new DataColumn("strFirst"); 
    col1.DataType = System.Type.GetType("System.String"); 

    DataColumn col2 = new DataColumn("strLast"); 
    col2.DataType = System.Type.GetType("System.String"); 

    table.Columns.Add (col1); 
    table.Columns.Add (col2); 

    return table; 
} 

請注意:DataSet不使用,並且所有BoundField S中runat="server"

+0

哇...羅素,謝謝你去解決這個問題。我很欣賞它。 –

+0

肯定的事情。它工作? –

+0

嗨拉塞爾,我最終得到了這個工作,所以謝謝你的幫助。 –