2013-05-06 79 views
2

我想建立SPGridView上aspx.cs无法呈现在页面上

HTML输出下面是代码

StringBuilder sb = new StringBuilder(); 
     sb.AppendFormat("<SharePoint:SPGridView runat=\"server\" ID=\"spgridview\" AutoGenerateColumns=\"false\" AllowPaging=\"true\" AllowSorting=\"true\" Visible=\"true\">\n"); 
     sb.AppendFormat("<Columns>\n"); 
     sb.AppendFormat("<asp:TemplateField>\n"); 
     sb.AppendFormat("<ItemTemplate>\n"); 
     sb.AppendFormat("<asp:Label ID=\"lblNo\" runat=\"server\" Text=\"First\"/>\n"); 
     sb.AppendFormat("</ItemTemplate>\n"); 
     sb.AppendFormat("</asp:TemplateField>\n"); 
     sb.AppendFormat("<asp:TemplateField>\n"); 
     sb.AppendFormat("<ItemTemplate>\n"); 
     sb.AppendFormat("<asp:Label ID=\"lblName\" runat=\"server\" Text=\"Janaki\"/>\n"); 
     sb.AppendFormat("</ItemTemplate>\n"); 
     sb.AppendFormat("</asp:TemplateField>\n"); 
     sb.AppendFormat("</Columns>\n"); 
     sb.AppendFormat("</SharePoint:SPGridView>\n"); 

我试过Response.Write(sb.ToString());,再没有比在页面上。我怎样才能得到这个工作。也许我错过了一些东西......请让我知道。

+1

你期待它执行服务器端代码吗? – 2013-05-06 15:52:20

回答

2

您不能这样动态地呈现控件;这不被支持,并将呈现为纯HTML。您必须在页面上静态定义它们,或者通过将它们添加到控件集合或父控件来加载它们。

1

字符串生成器中的所有内容都是服务器端控件。这意味着,如果您在渲染页面时尝试写出它,您将不会收到任何内容,或者最糟糕的情况是错误,因为浏览器不知道.NET控件是什么。

如果你想从后面的代码添加控件,你将需要使用Page.Form.Controls.Add()或类似的东西来做到这一点。

根据您的代码,您可能只需在aspx页面中包含字符串构建器的内容,并根据您的需要将Visible设置为falsetrue