安裝程序:具有大量TextBox控件的Web窗體。ASP.NET - 啓用時交換文本框標籤= False
當我將TextBox控件的Enabled屬性中的任何一個設置爲False時,我想在運行時將TextBox「交換」出標籤。這裏的想法是,只要它是隻讀的,不要將其顯示在專爲編輯而設計的控件中。
我在想這應該是非常簡單和可重複使用的,但是最好的方法是什麼?
安裝程序:具有大量TextBox控件的Web窗體。ASP.NET - 啓用時交換文本框標籤= False
當我將TextBox控件的Enabled屬性中的任何一個設置爲False時,我想在運行時將TextBox「交換」出標籤。這裏的想法是,只要它是隻讀的,不要將其顯示在專爲編輯而設計的控件中。
我在想這應該是非常簡單和可重複使用的,但是最好的方法是什麼?
不知道它的最好的方式,我會做一個自定義服務器控件是一個文本框,
然後重寫Render方法,檢查它是否是隻讀的,
如果讀它才使你的像標籤控件一樣的span標籤。
如果沒有的話讓基(文本)呈現接管......
public class SpecialTextbox : TextBox
{
public override void RenderControl(HtmlTextWriter writer)
{
if (!this.ReadOnly)
{
base.RenderControl(writer);
}
else
{
writer.Write(string.Format("<span id=\"{0}\" class=\"{1}\">{2}</span>",
this.ClientID,
this.CssClass,
this.Text));
}
}
}
一種可能的解決方案是創建一個擴展TextBox的新控件。然後,您的專用控件將覆蓋渲染代碼的一部分,導致控件在ReadOnly = true時呈現類似於標籤。
我喜歡他們的方式,你覺得... – BigBlondeViking 2009-06-25 21:25:51
另一種方法是尋找到使用控制適配器。你基本上可以做到與BigBlondeViking建議的完全相同的事情,但是你可以在代碼中使用常規的asp:textbox控件。這對你和其他開發者來說會容易得多。
你可以交換「跨度」爲「標籤」,如果你想和 – BigBlondeViking 2009-06-26 17:36:26