<form runat="server" id="f1"> <div runat="server" id="d"> grid view: <asp:GridView runat="server" ID="g"> </asp:GridView> </div> <asp:TextBox runat="server" ID="t" TextMode="MultiLine" Rows="20" Columns="50"></asp:TextBox></form>后面的代碼:public partial class ScriptTest : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { g.DataSource = new string[] { "a", "b", "c" }; g.DataBind(); TextWriter tw = new StringWriter(); HtmlTextWriter h = new HtmlTextWriter(tw); d.RenderControl(h); t.Text = tw.ToString(); }}即使GridView也位于帶有runat =“ server”的from標記內,仍然出現(xiàn)此錯誤。有什么線索嗎?
3 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
重寫VerifyRenderingInServerForm的替代方法是在執(zhí)行渲染時從控件集合中刪除網格,然后在完成頁面加載之前將其重新添加。如果您想擁有一些通用的輔助方法來獲取表格html,這將很有幫助,因為您不必記住添加替代。
Control parent = grid.Parent;
int GridIndex = 0;
if (parent != null)
{
GridIndex = parent.Controls.IndexOf(grid);
parent.Controls.Remove(grid);
}
grid.RenderControl(hw);
if (parent != null)
{
parent.Controls.AddAt(GridIndex, grid);
}
避免覆蓋的另一種方法是:
grid.RenderBeginTag(hw);
grid.HeaderRow.RenderControl(hw);
foreach (GridViewRow row in grid.Rows)
{
row.RenderControl(hw);
}
grid.FooterRow.RenderControl(hw);
grid.RenderEndTag(hw);
- 3 回答
- 0 關注
- 468 瀏覽
添加回答
舉報
0/150
提交
取消