2016-03-18 24 views
0

我有一個存儲某些表單的自定義字段的數據庫表。我從後面的代碼動態地構建這些表單,它工作,但它看起來很糟糕。我希望能夠將表格封裝在表格中。在動態添加表單元素時將HTML添加到服務器表單ASP.NET

我有以下代碼來動態創建表單元素。通過使用一個循環我可以爲每個自定義的創建一個標籤和輸入框字段

Label label = new Label(); 
label.Text = field["fieldname"]; 
newclientform.Controls.Add(label); 

TextBox textinput = new TextBox(); 
textinput.ID = field["uiname"]; 
newclientform.Controls.Add(textinput); 

所有靜態表單元素都正確地包裹在HTML,我可以寫入到aspx文件這一點,但這些都不動態元素被包裝在HTML中。 我嘗試以下,但沒有一個HTML的渲染

label.Text = "<tr><th>" + field["fieldname"] + "</th></tr>"; 

我如何包裝在這些HTML表單元素?

回答

0

我可以建議你使用中繼器,或任何其他類似的功能。在代碼隱藏處創建一箇中繼器,使用文字對象插入正確的html標記,然後放置您的文本框,並用另一個文字關閉它。

Literal是將HTML代碼發送到接口的最乾淨的對象,因爲Label對象使用不必要的HTML標記進行呈現,這可能會導致您的問題擺在第一位。

0

首先,我的英語很差。 以你的方式,我不知道你是否可以做到, 但我認爲你需要嘗試這種控制---- PlaceHolder。

<asp:PlaceHolder ID="placeHolderId" runat="server"> 
    on here, you can write any dom element 
</asp:PlaceHolder> 

在後面的代碼,這樣--------

placeHolderId.Controls.Add(yourControlObject); 
+0

這是一個好主意,但我怎麼添加多個?我不知道會有多少自定義字段。可能是1可能是10.我如何創建具有唯一ID的多個佔位符? ASP.net不允許使用動態ID其他明智的我不需要使用代碼 –

+0

添加到頁面的最佳方式是頁面是Ajax,WebForm有一些缺點,如頁面回發時,一些控件的數據將重置,您必須判斷if(Page.IsPostBack == true),特別是DropDownList。但是,如果您選擇Ajax,則只需將數據序列化到json中並寫入響應的流中。因此,使用JavaScript的「XMLHttpRequest」對象來接收和--- var obj = JSON.Prase(xmlHttpRequestObj);成爲一個對象,併爲(在obj中的屬性){包obj [屬性]成爲一個DOM,並添加到頁面}。對不起,我的英文很差,我不知道如何更改代碼樣式 –

+0

PlaceHolder有能力添加任何金額控制------ placeHodlerId.Control.Add(ctrl1); placeHolder.Control.Add(CTRL2); placeHolder.Control.Add(CTRL3);多,沒問題。 –

相關問題