Книжник
Зарегистрирован: 15 November 2007
Сообщения: 165
Примеры кода: 0
|
Не могу обработать вложенный HiddenField. Помогите, плиз |
18 February 2008 18:37 |
|
|
|
|
Коллеги! Делаю следующее. Создаю свой контрол, вида
public class Region : WebControl, INamingContainer
{
HiddenField hdnSel;
intFrame outFrame; // это контрол, который реализует iframe. Он работает.
public Region()
: base(HtmlTextWriterTag.Div)
{
hdnSel = new HiddenField();
outFrame = new intFrame();
hdnSel.EnableViewState = true;
}
protected override HtmlTextWriterTag TagKey
{
get { return HtmlTextWriterTag.Div; }
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Src, Source);
writer.AddAttribute(HtmlTextWriterAttribute.Id, ID);
writer.AddAttribute(HtmlTextWriterAttribute.Name, ID);
base.RenderBeginTag(writer);
}
protected override void CreateChildControls()
{
string frameParams;
base.CreateChildControls();
Controls.Add(outFrame);
Controls.Add(hdnSel);
hdnSel.ValueChanged += this.SelectedChanged;
frameParams += "?HdnSel=" + hdnSel.ClientID;
if (hdnSel.Value != "") frameParams += "&IdSel=" + hdnSel.Value + "#" + hdnSel.Value;
outFrame.Source = Source + frameParams;
}
}
Значение hdnSel передаётся в качестве параметра при вызове iframe.
В итоге, посредством клиентского скрипта, значение hdnSel меняется. А затем, после PostBack, дочерние контролы создаются заново. И на клиента передаётся не переутановленное значение, а совершенно пустое.
При этом серверный обработчик изменения hidden'а (SelectedChanged) отрабатывает, но В САМОМ КОНЦЕ. И в нём видны и старое значение hdnSel, и вновь пришедшее в sender'е. Каким образом мне б его добыть и запихать в CreateChildControls?
Или надо менять всю систему?
Гуру, подскажите.
Спасибо. Отец, конечно, сам может. Но у быка лучше получается.
|
|