动态GridView包含所有格式和模板字段

时间:2011-02-25 14:31:13

标签: c# asp.net

我想动态添加gridview以及所有格式和模板字段..

我是通过以下方式尝试的。

public StringBuilder getTextForGridView()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(" <asp:GridView ID=\"GridView1\" runat=\"server\" AutoGenerateColumns=\"False\" ");
sb.AppendLine(" CellPadding=\"4\" ForeColor=\"#333333\" GridLines=\"None\" ShowHeader=\"true\">");

sb.AppendLine(" <Columns>");

sb.AppendLine(" <asp:TemplateField>");
sb.AppendLine(" <HeaderTemplate>");

sb.AppendLine(" <asp:Label ID=\"lbl1\" runat=\"server\" Text='<%#Eval(\"Id\")%>'></asp:Label>");
sb.AppendLine(" </HeaderTemplate>");
sb.AppendLine(" <ItemTemplate>");
sb.AppendLine(" <asp:Label ID=\"lbl1\" runat=\"server\" Text='<%#Eval(\"Id\")%>'></asp:Label>");

sb.AppendLine(" </ItemTemplate>");

sb.AppendLine(" </asp:TemplateField>");

sb.AppendLine(" <asp:TemplateField>");
sb.AppendLine(" <HeaderTemplate>");

sb.AppendLine(" <asp:Label ID=\"lbl1\" runat=\"server\" Text='<%#Eval(\"Name\")%>'></asp:Label>");
sb.AppendLine(" </HeaderTemplate>");
sb.AppendLine(" <ItemTemplate>");
sb.AppendLine(" <asp:Label ID=\"lbl1\" runat=\"server\" Text='<%#Eval(\"Name\")%>'></asp:Label>");

sb.AppendLine(" </ItemTemplate>");

sb.AppendLine(" </asp:TemplateField>");
sb.AppendLine(" </Columns>");

sb.AppendLine(" </asp:GridView>");

return sb;
}

然后我将以下文本分配给文字并将其添加到占位符

Literal li = new Literal();
li.ID = "lit";
li.Text = getTextForGridView().ToString();

PlaceHolder1.Controls.Add(li);

但问题是我无法将数据源分配给gridview,因为我无法获得gridview的对象。 请让我离开这里。 感谢。

2 个答案:

答案 0 :(得分:1)

您正在向页面添加字符串,您必须将一个GridView实例添加到ControlTree,以便ASP.NET了解它。看一下这篇文章,以便更好地理解。

Dynamic Controls in ASP.NET

答案 1 :(得分:0)

正如Rick所说,您可以通过编程方式向ControlTree添加新的GridView:

GridView myGV = New GridView();
myGV.ID = "GridView1";
myGV.DataSourceID = "SqlDataSource1";
...

您可以让您的列自动生成(使用GridView.AutoGenerateColumns属性)或手动将DataControlField添加到Columns集合中:

BoundField col1 = New BoundField();
col1.HeaderText = "Column Header Text";
col1.DataField = "DataSourceColumn";
myGV.Columns.Add(bField);

有关详细信息,请参阅GridviewDataControlField MSDN文章。