2010-11-15 43 views
0

这非常有趣..在代码后面创建多个Gridviews

我想在面板中有多个gridviews。和gridviews的数量是不固定的。

所以基本上我认为应该没有在.aspx页面的代码,因为我必须在代码隐藏中创建gridview。

我有一个gridview在一个面板中的代码..其中我在HTML页面中定义网格视图,并从代码后面填充它。

下面是该代码..可以在任何1,请帮助我多GridView的...

这是在.aspx页面上

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     AllowSorting="True" CellSpacing="2" onsorting="GridView1_Sorting" 
        Width="100%" ForeColor="White" GridLines="None" 
         ondatabound="GridView1_DataBound1"> 

     <Columns> 
          <EditItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("PolicyID") %>'></asp:Label> 
          </EditItemTemplate> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Bind("PolicyID") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

这背后

代码
protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      DataTable dt = new DataTable(); 
      SqlConnection connection = new SqlConnection(Session["ConnectionStringSQL"].ToString()); 
      connection.Open(); 
      SqlCommand sqlCmd = new SqlCommand("SELECT Policies.PolicyID, FROM Policies", connection); 
      SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd); 

      sqlDa.Fill(dt); 
      connection.Close(); 

      if (dt.Rows.Count > 0) 
      { 
       for (int j = 0; j < dt.Rows.Count; j++) 
       { 
        policyID.Add(dt.Rows[j]["PolicyID"].ToString()); 

       } 
       taskTable.Columns.Add("PolicyID"); 


       if (policyID.Count != 0) 
       { 
        for (int k = 0; k < policyID.Count; k++) 
        { 
         DataRow tableRow = taskTable.NewRow(); 

         tableRow["PolicyID"] = policyID[k]; 

         taskTable.Rows.Add(tableRow); 
        } 

        Session["TaskTable"] = taskTable; 

        GridView1.DataSource = Session["TaskTable"]; 
        GridView1.DataBind(); 
       } 
      } 
     } 
    } 

回答

2

没有测试,但这种事情应该这样做:

for (int i=0;i<5;i++) { 
    GridView gv = new GridView(); 
    gv.DataSource = datasources[i]; 
    Page.Controls.Add(gv); 
} 
Page.DataBind(); 
+0

如下状态里面的评论,这将打破,如果你使用的母版 – 2016-06-17 21:00:59

2

答案1的作品,但只是要小心,如果你将它嵌套在母版页等内部,因为它似乎当你直接绑定到页面,你不能期望它实际上被放置在你的窗体标签。

我有一个返回未知号码,我想转储到页面,所以我把aspx页面

一个占位符,然后使用循环经过我的数据集不同的表的存储过程

foreach (DataTable table in ds.Tables) 
{ 
    GridView gv = new GridView(); 
    gv.DataSource = table; 
    gvPlaceHolder.Controls.Add(gv); 
} 

..... OR ....

for (int i = 0; i < ds.Tables.Count; i++) 
{ 
      GridView gv = new GridView(); 
      gv.DataSource = ds.Tables[i]; 

      gvPlaceHolder.Controls.Add(gv); 
} 

..然后结合到p laceholder所以表结束我的孩子页面中我的表格里,这是我的母版页

   gvPlaceHolder.DataBind(); 
+0

以供将来参考,您应该参考其他因为该订单是基于投票分数,而投票分数可随时间变化而变化,所以海报的名称(或其他独特的标准)而不是订单号。 – 2013-01-25 21:08:08

相关问题