2011-06-14 59 views
2
TextWriter tr = new StringWriter(); 
HtmlTextWriter writer = new HtmlTextWriter(tr); 
HtmlForm form = new HtmlForm(); 
form.Controls.Add(divQueryDescription); 
divQueryDescription.RenderControl(writer); 

<div runat="server" id="divQueryDescription"> 
    <asp:GridView runat="server" id="grv"></asp:GridView> 
</div> 

我的GridView位於DIV中,並將該DIV添加到HtmlForm中,以便我可以將其呈現爲字符串。但我得到以下錯誤:雖然我的Gridview已經在表單中,因爲我將DIV添加到表單中,但Gridview'grv'必須放置在帶有runat = server的表單標籤內。必須將GridView添加到表單標記以進行呈現

如何將這個DIV渲染爲字符串?

+0

請發佈完整的表單設計。 – 2011-06-14 10:54:04

+0

@Muhammad頁面的html中沒有任何形式。我正在動態創建表單,因爲我需要通過電子郵件發送該內容。 – teenup 2011-06-14 11:19:57

+0

我已經更新了我的回答,以解決我之前忽略的內容;請儘量避免發佈你的問題兩次,以獲得更多的關注 - 你的其他問題中的額外數據可能會被編輯到這一個的主體中,以使其更新:http://stackoverflow.com/questions/6343630/gridview-must-be-placed-inside-a-form-tag-with-runat-server-even-the-grid – 2011-06-14 13:19:21

回答

4

只是在你的網頁

public override void VerifyRenderingInServerForm(Control control) 
{ 
    return; 
} 

添加以下代碼,以瞭解更多關於它,閱讀MSDN documentation

+0

我沒有這種方法來覆蓋我的情況。因爲我在UserControl上有我的DIV。 – teenup 2011-06-14 11:30:38

+0

覆蓋它在承載您的UserControl的頁面 - 我沒有嘗試過,但應該做的竅門 – sandyiit 2011-06-14 12:39:48

+0

這是一個Sharepoint頁面,我不能添加編輯它! – teenup 2011-06-14 12:43:24

0

從你告訴我們這裏,GridView已經與runat="server"一個form元素,你需要做的是這樣的:

<form runat="server"> 
    <div runat="server" id="divQueryDescription"> 
     <asp:GridView runat="server" id="grv"></asp:GridView> 
    </div> 
</form> 

尤其值得注意的是<form runat="server">部分,其結尾標籤。

更新:

它看起來像form是造成問題,因爲它一直沒有寫出來,你從div直接寫出:嘗試使用form.RenderControl(writer);

+0

我已經動態地將DIV添加到HtmlForm中...請再次查看代碼..並且GridView在該DIV中..這不是GridView自動添加到該窗體的Controls集合中嗎? – teenup 2011-06-14 11:18:42

+0

如果我直接將GridView添加到HtmlForm的控件集合中,則此異常消失。 – teenup 2011-06-14 11:29:46

0

確保您已的Runat =「服務器」,在你的表單元素/控制