Как избежать InvalidOperationException при установке кнопки по умолчанию в содержимом ASPX - PullRequest
1 голос
/ 23 июля 2010

Я пытаюсь установить кнопку по умолчанию на моей странице ASPX. У меня есть главная страница, поэтому форма там. У меня есть панель на странице содержимого, которая содержит таблицу, которая организует ряд текстовых полей, выпадающих и других входов. Последняя строка таблицы содержит несколько кнопок, одной из которых я хочу быть кнопкой по умолчанию. После некоторого исследования я попробовал следующее безуспешно.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
       pnlHolder.DefaultButton = cmdSearchJob.ClientID

Я тоже пробовал

pnlHolder.DefaultButton = cmdSearchJob.UniqueID

и

Dim cmdDef As Button = pnlHolder.FindControl("cmdSearchJob")
pnlHolder.DefaultButton = cmdDef.UniqueID

, но оба выдают исключение "DefaultButton для 'pnlHolder' должен быть идентификатором элемента управления типа IButtonControl." .

Я видел некоторые решения Javascript, но надеялся просто установить кнопку по умолчанию для панели.

Ответы [ 4 ]

2 голосов
/ 23 июля 2010

Попробуйте установить DefaultButton родительской формы.

C #:

 this.Page.Form.DefaultButton = cmdSearchJob.UniqueID;

VB:

me.Page.Form.DefaultButton = cmdSearchJob.UniqueID

Подобная проблема здесь: Разрешить Enter ключ для входа в asp.net?

0 голосов
/ 23 июля 2010

Наконец-то нашел, что это было. Попытался добавить еще одну кнопку без CSS и т. Д., Которая просто выдавала предупреждение javacsript () для тестирования. Был в состоянии установить это в качестве кнопки по умолчанию, когда она была за пределами таблицы. Так как кнопка отправки является одной из серии кнопок (не очень приятного пользовательского интерфейса, но требований пользователя и всего прочего) в таблице, я использовал эту дополнительную кнопку и установил ее стиль для отображения: нет, и чтобы она вызывала ту же подпрограмму код позади.

Итак, короткий ответ, его не было в таблице.

Спасибо всем за ваш вклад.

Я до сих пор не понимаю, почему он не установил кнопку.

0 голосов
/ 23 июля 2010

Можете ли вы установить это внутри элемента управления на внешнем интерфейсе?

<asp:Panel id="pnlHolder" DefaultButton="cmdSearchJob">
<asp:Button id="cmdSearchJob" runat="server" Text="Search" />
</asp:Panel>

Также, возможно, стоит знать, какой тип объекта является cmdSearchJob?Это стандартное управление кнопками asp.net?

0 голосов
/ 23 июля 2010

Попробуйте установить его на:

cmdSearchJob.ID

Панель будет вызывать FindControl для получения самого идентификатора клиента

...