Пользовательский элемент управления ASP.NET и Page.Request.Form [] - PullRequest
1 голос
/ 10 января 2010

У меня есть элемент управления, который наследуется от System.Web.UI.Control и содержит общие элементы управления HTML, а не серверные элементы управления asp.net.Я использую Page.Request.Form [Control_id], чтобы получить значение одного из элементов управления.Это в основном работает, примите, если у меня есть gridview, который содержит столбец этих пользовательских элементов управления, и я добавляю новую строку [row6], а затем удаляю строку сверху tht row [row3], элемент управления в новой строке [row6 становится row5]принимает значение строки, расположенной непосредственно над ней [row5, становящийся row4].

Я полагаю, это потому, что я использую Page.Request.Form [], чтобы получить значение для каждого элемента управления, но мой элемент управления не знает, что эти значения принадлежали элементам управления, которые ранее занимали одну и ту же строку.Как это исправить?Я бы оценил любые предложения !!

1 Ответ

1 голос
/ 29 января 2010

Вам не нужно связываться с коллекцией 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);
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...