我有一個可行的解決方案,但它不符合客戶的QA要求。問題是我無法控制WebControls的位置,它們需要相對於高於這些的圖表。我如何看到它,我需要將「編譯」的sb.ToString()放入一個WebControl中,然後我可以使用Controls.Add()。HtmlTextWriter解決方案作爲WebControl被添加
我需要這個工作的解決方案去:
私人無效SetTextBoxes()
{
文本框myBox上=新的TextBox();
System.Web.UI.WebControls.Label myLabel = new System.Web.UI.WebControls.Label();// <table><tr> for (int i = 0; i < _module.Values.Count; i++) { myLabel = new System.Web.UI.WebControls.Label(); myLabel.Text = _module.Values[i].Text.ToString() + ": "; myBox = new TextBox(); myBox.BorderStyle = BorderStyle.None; myBox.ReadOnly = true; myBox.Text = _module.Values[i].Value.ToString("n0"); myBox.Columns = myBox.Text.Length; // <td align="center"> Controls.Add(myLabel); Controls.Add(myBox); // </td> } // </tr></table> }
主要是Controls.Add()
,因爲它關係到覆蓋該代碼等少數器WebControls的模塊化系統。
我有一個解決方案可能看起來像什麼的建議。
private string WriteHtml()
{
StringBuilder sb = new StringBuilder();
using (StringWriter stringWriter = new StringWriter(sb))
{
using (HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter))
{
htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Table);
htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Tr);
for (int i = 0; i < _module.Values.Count; i++)
{
htmlTextWriter.RenderBeginTag(HtmlTextWriterTag.Td);
htmlTextWriter.Write(string.Format("{0}: {1:n0}"
, _module.Values[i].Text
, _module.Values[i].Value));
htmlTextWriter.RenderEndTag(); // td
}
htmlTextWriter.RenderEndTag(); // tr
htmlTextWriter.RenderEndTag(); // table
}
}
//Controls.Add(sb.ToString());
return sb.ToString();
}
您打算在什麼階段調用WriteHtml()方法? – IceN
SetTextBoxes()在CreateChildControls()期間被調用,我假定WriteHtml會替換它。 – DoStuffZ