2010-01-09 109 views
1

我有一個控制從System.Web.UI.Control繼承,幷包含通用的HTML控件,而不是asp.net服務器端控件。我使用Page.Request.Form [Control_id]來獲取其中一個控件的值。這基本上工作接受,如果我有一個gridview包含這些自定義控件的列,我添加一個新行[row6],然後刪除行[row3]上的行,新行中的控制[row6成爲row5]假設它緊挨着它的行的值[row5成爲row4]。ASP.NET自定義控件和Page.Request.Form []

我相信這是因爲我使用Page.Request.Form []獲取每個控件的值,但是我的控件並不知道這些值屬於先前已佔用同一行的控件。我該如何解決?我會讚賞任何建議!

+2

我很難把握這個;你能編輯這個並添加額外的代碼來支持這個問題嗎?謝謝。 –

回答

0

你不需要搞亂Page.Request.Form集合。你需要的是一個適當的複合控制。這裏有一個簡單的例子:

public class InputTextWithLabelControl : CompositeControl { 

    HtmlGenericControl _label; 
    HtmlInputText _text; 

    public string Label { 
    get { 
     EnsureChildControls(); 
     return _label.InnerText; 
    } 
    set { 
     EnsureChildControls(); 
     _label.InnerText = value; 
    } 
    } 

    public string Text { 
    get { 
     EnsureChildControls(); 
     return _text.Value; 
    } 
    set { 
     EnsureChildControls(); 
     _text.Value = value; 
    } 
    } 

    protected override void CreateChildControls() { 
    Controls.Clear(); 

    _label = new HtmlGenericControl("span"); 
    _label.ID = "label"; 

    _text = new HtmlInputText(); 
    _text.ID = "text"; 

    Controls.Add(_label); 
    Controls.Add(_text); 
    } 

}