1

我有一个继承自 System.Web.UI.Control 并包含通用 HTML 控件而不是 asp.net 服务器端控件的控件。我使用 Page.Request.Form[Control_id] 来获取其中一个控件的值。如果我有一个包含这些自定义控件的列的 gridview 并且我添加一个新行 [row6] 然后从第行 [row3] 上方删除一行,则这基本上可以接受,新行中的控件 [row6 变为 row5]假定其正上方的行的值 [row5 变为 row4]。

我相信这是因为我使用 Page.Request.Form[] 来获取每个控件的值,但我的控件不知道这些值属于以前占据同一行的控件。我该如何解决?我会感谢任何建议!

4

1 回答 1

1

你不需要弄乱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);
  }

}
于 2010-01-29T16:56:39.590 回答