1

System.Web.UI.Control から継承し、asp.net サーバー側コントロールではなく汎用 HTML コントロールを含むコントロールがあります。Page.Request.Form[Control_id] を使用して、コントロールの 1 つの値を取得します。これは基本的に、これらのカスタム コントロールの列を含むグリッドビューがあり、新しい行 [row6] を追加し、行 [row3] の上から行を削除すると、新しい行のコントロール [row6 が row5 になる] で受け入れられます。そのすぐ上の行の値を想定します [行 5 は行 4 になります]。

これは、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 に答える