LinkButton в пользовательском элементе управления не отображает идентификатор (или действительно работает вообще) - PullRequest
0 голосов
/ 03 февраля 2011

Я предполагаю, что это может быть связано с с этим , но, к сожалению, обходной путь, похоже, не работает в этом случае.до самого простого случая.Это не работает.

   public class MyButton : Control
    {
        public MyButton()
            : base()
        {
            LinkButton but = new LinkButton();
            but.CommandName = "test";
            but.CommandArgument = "test2";
            but.Text = "Click Here";
            Controls.Add(but);
        }
    }

Что делает:

<a href="javascript:__doPostBack('ctl00$ctl11$ctl07','')">Click Here</a>

Здесь есть две основные проблемы.Во-первых, нет идентификатора.Должен иметь тег id='ctl00$ctl11$ctl07'.Таким образом, даже при том, что это отправит, события никогда не будут захвачены.

Во-вторых, он игнорирует CommandName и CommandArgument, в любом случае он должен отображать __doPostBackWithOptions.

Неужели я очень глуп и просто упускаю из виду что-то очевидное, или это огромная ошибка в ASP.NET??

Я делал это много раз раньше, когда внутри Control или WebControl отображалось много других элементов управления, и никогда не возникало проблем, поэтому он должен иметь отношение к простоте, а не ксложность, я думаю.

Если кто-нибудь может помочь мне решить эту проблему, это будет очень цениться.

Ответы [ 3 ]

0 голосов
/ 03 февраля 2011

Установите свойство ID вашей кнопки.

but.ID = "MyLinkButtonID";
 but.Command += new CommandEventHandler(EVENTHANDLER);

Если кнопка всегда является членом класса, добавьте кнопку в качестве члена и добавьте ее в коллекцию Controls в событии OnInit.

Забыл добавить обработчик события для командного события.

0 голосов
/ 03 февраля 2011

ARGH!Я пинаю себя, ответ на самом деле проблема с контейнером именования.Это была одна из тех ситуаций, когда все, что я мог сделать, это сосредоточиться на какой-то детали, которая на самом деле не была проблемой.

Мой пользовательский элемент управления отправляется другим элементом ... в еще один третий элемент управления.Но может быть несколько примеров «третьего контроля».(По большому счету, я делаю что-то, что позволит мне поместить копию кнопок управления формой как до, так и после формы. Главный элемент управления определяет, какие кнопки следует генерировать для данной формы.).

Таким образом, «третий элемент управления» не был контейнером именования.И это убивало это.Но я никогда не получал ошибок о конфликтах ID, просто это не сработало.

0 голосов
/ 03 февраля 2011

Это потому, что вы должны реализовать интерфейс INamingContainer

...