我想动态添加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的对象。 请让我离开这里。 感谢。
答案 0 :(得分:1)
您正在向页面添加字符串,您必须将一个GridView实例添加到ControlTree,以便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);
有关详细信息,请参阅Gridview和DataControlField MSDN文章。