Есть страница. Default.aspx
Идея такова если пишут Default.aspx?go=search то я должен загрузить этот контрол.
Вмазываю плэйсхолдер значит.
И пишу вот это:
/// <summary>
/// Загружает контрол.
/// </summary>private void LoadMod(string ctrlname)
{
PH1.Controls.Clear(); // На всякий случай чистим его от всякой фигни.
Title = "Бла бла бла..." - " + Arxiv.MainMenu.MM.GetTitle(ModKey);
Control ctrl = LoadControl("controls\\" + ctrlname + ".ascx");
ctrl.ID = "dctrl";
PH1.Controls.Add(ctrl);
}
Срабатывает у контрола событие Page_Load, а вот по нажатию кнопки НИЧЕ НЕ ПАШЕТ я уже все комбинации перепробывал и тут искал ничё подобного нету . Подскажите что я тут делаю неправильно?
Ребята из aspnetmania мне нужно движок сделать который модули грузит. События он пэйдж лоад отрабатывают с ними всё ОК НО события кнопки не пашут... хелп плизззз.
Re[2]: НЕ РАБОТАЕТ СОБЫТИЕ !!!
От:
Аноним
Дата:
12.07.06 05:22
Оценка:
Здравствуйте, shinji, Вы писали:
S>Ребята из aspnetmania мне нужно движок сделать который модули грузит. События он пэйдж лоад отрабатывают с ними всё ОК НО события кнопки не пашут... хелп плизззз.
Смотри на SQL.ru http://www.sql.ru/forum/actualthread.aspx?tid=313595
S>Есть страница. Default.aspx S>Идея такова если пишут Default.aspx?go=search то я должен загрузить этот контрол. S>Вмазываю плэйсхолдер значит.
на какой стадии в странице ты "вмазываешь"? S>И пишу вот это:
S>
S> /// <summary>
S> /// Загружает контрол.
S> /// </summary>
S> private void LoadMod(string ctrlname)
S> {
S> PH1.Controls.Clear(); // На всякий случай чистим его от всякой фигни.
S> Title = "Бла бла бла..." - " + Arxiv.MainMenu.MM.GetTitle(ModKey);
S> Control ctrl = LoadControl("controls\\" + ctrlname + ".ascx");
S> ctrl.ID = "dctrl";
S> PH1.Controls.Add(ctrl);
S> }
S>
скорее всего на стадии page_load, тогда надо еще обработчик свой вручную подписать...
ctrl.Click+=new System.EventHandler(this.ctrl_Click) S>Срабатывает у контрола событие Page_Load, а вот по нажатию кнопки НИЧЕ НЕ ПАШЕТ я уже все комбинации перепробывал и тут искал ничё подобного нету . Подскажите что я тут делаю неправильно?
вообщем, надо поискать по следующим keywords:"Add dynamic contols"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: НЕ РАБОТАЕТ СОБЫТИЕ !!!
От:
Аноним
Дата:
12.07.06 03:52
Оценка:
А зачем мучиться с плэйсхолдером?
Просто проверь наличие в QueryString элемента go со значением равным search. И если таковой имеется подставь контрол, только сделай это не в кодбихайнде, а в aspx коде.
Ну примерно вот так:
<form id="form1" runat="server">
<div>
<%if(Request.QueryString["go"]=="search"){ %>
<uc1:Search ID="Search1" runat="server" />
<%}%>
</div>
</form>
У меня заработало.
А мне нужно динамически грузить контролы, БЕЗ ВОТ ЭТОЙ СТРОЧКИ ВРУКОПАШКУ ПРОПИСЫВАЕМОЙ НИКАК "<%@ Register Src="Search.ascx" TagName="Search" TagPrefix="uc1" %>" ?
Я написал модуль как интерфейс IMod... у него 3 поля есть.
switch (ModKey)
{
case "search":
LoadMod(PH1, "search");
break;
case "adddoc":
LoadMod(PH1, "adddoc");
break;
default:
Response.Redirect("Default.aspx?go=" + DefMod, true);
break;
}
из проверки на !IsPostBack чтобы он выполнялся при каждом реквесте и все заработает.
Динамически добавляемые контролы нужно добавлять при каждом реквесте страницы
Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.