Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
Есть контрол... search.ascx в веб части стоит это: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="search.ascx.cs" Inherits="Arxiv.Controls.SearchCtrl" %> <table cellpadding="5" cellspacing="0" width="100%" border="0" style="border-collapse: collapse;"> <tr> <td class="content"> <asp:Button ID="BSearch" runat="server" Text="Найти" OnClick="BSearch_Click" /> </td> </tr> </table> В кодбихаинде — это: using System; namespace Arxiv.Controls { public partial class SearchCtrl : BaseControl { /// <summary> /// Констркутор. /// </summary> public SearchCtrl() { } protected void Page_Load(object sender, EventArgs e) { Response.Write("sadasdsa"); } protected void BSearch_Click(object sender, EventArgs e) { Response.Redirect("asdasdsa"); } } } Есть страница. 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, а вот по нажатию кнопки НИЧЕ НЕ ПАШЕТ я уже все комбинации перепробывал и тут искал ничё подобного нету :(. Подскажите что я тут делаю неправильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 05:35 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
А зачем мучиться с плэйсхолдером? Просто проверь наличие в QueryString элемента go со значением равным search. И если таковой имеется подставь контрол, только сделай это не в кодбихайнде, а в aspx коде. Ну примерно вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 07:52 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
Ребята из aspnetmania мне нужно движок сделать который модули грузит. События он пэйдж лоад отрабатывают с ними всё ОК НО события кнопки не пашут... хелп плизззз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 08:30 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, shinji, Вы писали: S>Ребята из aspnetmania мне нужно движок сделать который модули грузит. События он пэйдж лоад отрабатывают с ними всё ОК НО события кнопки не пашут... хелп плизззз. Смотри на SQL.ru http://www.sql.ru/forum/actualthread.aspx?tid=313595 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 09:22 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
А мне нужно динамически грузить контролы, БЕЗ ВОТ ЭТОЙ СТРОЧКИ ВРУКОПАШКУ ПРОПИСЫВАЕМОЙ НИКАК "<%@ Register Src="Search.ascx" TagName="Search" TagPrefix="uc1" %>" ? Я написал модуль как интерфейс IMod... у него 3 поля есть. string pagetitle; string pagekey; - Default.aspx?go=pagekey UserControl ctl; Вообщем всё ок пашет грузится динамически ДЛЛКИ всё ОК, НО не пашет то, что я там писал сверху... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 09:45 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
объяви ctrl статиком на уровне класса, иначе он при каждом постбэке перетирается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 10:03 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
VovanDrобъяви ctrl статиком на уровне класса, иначе он при каждом постбэке перетирается Пример плизз чтото не понял только в каком его месте статиком делать... ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 10:46 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
примерно так public class myPage: System.Web.UI.Page { static private System.Web.UI.Control CONTROL; private void Page_Load(object sender, System.EventArgs e) { if(CONTROL==null) CONTROL=(Control)LoadControl(controlName + ".ascx"); this.Controls.Add (CONTROL); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 11:11 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
Базовый контрол - тут возможно будут какието функции добавлены. using System; using System.Data; namespace Arxiv.Controls { /// <summary> /// Базовый контрол. /// </summary> public class BaseControl : System.Web.UI.UserControl { } } Базовая страница - вставлены только функции которые плохо работают (много удалил лишнего). namespace Arxiv.Pages { public class BasePage : System.Web.UI.Page { private static BaseControl ctrl; /// <summary> /// Загружает модуль. /// </summary> /// <param name="container">Контейнер.</param> /// <param name="ctrlname">Название модуля.</param> public void LoadMod(PlaceHolder container, string ctrlname) { ctrl = (BaseControl)LoadControl("~/controls/" + ctrlname + ".ascx"); container.Controls.Add(ctrl); this.Title = "Архив документов ОАО КБ \"Искра\" - " + Arxiv.MainMenu.MM.GetTitle(this.ModKey); } } Рабочая страница. using System; using Arxiv.Pages; using System.Web.UI; using Arxiv.Controls; using Arxiv.Sessions; public partial class MainPage : BasePage { /// <summary> /// Событие при загрузке формы. /// </summary> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (!ASessions.Pass) Response.Redirect("Login.aspx", true); switch (ModKey) { case "search": LoadMod(PH1, "search"); break; case "adddoc": LoadMod(PH1, "adddoc"); break; default: Response.Redirect("Default.aspx?go=" + DefMod, true); break; } } } } Кодбехаинд и веб часть контрола. using System; namespace Arxiv.Controls { public partial class Search : BaseControl { protected void Page_Load(object sender, EventArgs e) { Response.Write("asdasdsadsadwqfwqfqw"); } protected void Button1_Click(object sender, EventArgs e) { Response.Write("asdasdsadsadwqfwqfqw"); } } } Веб часть: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="search.ascx.cs" Inherits="Arxiv.Controls.Search" %> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> Веб часть страницы Default.aspx на которой всё грузится. автор<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="MainPage" MasterPageFile="Default.master" %> <asp:Content ContentPlaceHolderID="MainContainer" ID="MC" runat="server"> <asp:PlaceHolder ID="PH1" runat="server"> </asp:PlaceHolder> </asp:Content> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 11:47 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
Ну чё вообще никто не знает ? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 12:06 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, shinji, Вы писали: 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>> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 12:22 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
using System; namespace Arxiv.Controls { public partial class Search : BaseControl { protected void Page_Init(object sender, EventArgs e) { Button1.Click += new EventHandler(Button1_Click); Response.Write("asdasdsadsadwqfwqfqw"); } protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { Response.Write("213213123213"); } } } Сделал так всравно ничё :( кажись придется всё раскидывать либо полностью самописными конитролами либо по страницам с мастерпэйджами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 12:34 |
|
||
|
НЕ РАБОТАЕТ СОБЫТИЕ !!!
|
|||
|---|---|---|---|
|
#18+
Вынеси вот этот код: switch (ModKey) { case "search": LoadMod(PH1, "search"); break; case "adddoc": LoadMod(PH1, "adddoc"); break; default: Response.Redirect("Default.aspx?go=" + DefMod, true); break; } из проверки на !IsPostBack чтобы он выполнялся при каждом реквесте и все заработает. Динамически добавляемые контролы нужно добавлять при каждом реквесте страницы Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2006, 14:30 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33846557&tid=1391804]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 477ms |

| 0 / 0 |
