2013-06-21 129 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

嗨拉塞尔,我最终得到了这个工作,所以谢谢你的帮助。 –