ImageButton не использует метод codebind, но делает, если его заменить LinkButton - PullRequest
0 голосов
/ 13 ноября 2009

У меня строится ImageButton внутри столбца radgridviewn. Это определяется следующим образом.

<asp:ImageButton ID="ImageButton_DeleteRun" ImageUrl="~/Assets/Images/Misc/delete.png"
runat="server" OnClick="QueryDelete" CommandName="QueryDelete" 
CommandArgument='<%# DataBinder.Eval(Container,"DataItem.QueryGuid") %>'
Width="10" Height="10" />

загружается правильно. Когда я нажимаю на нее, я ожидаю, что получу следующий метод codebehind:

protected void QueryDelete(object sender, EventArgs e)
{
/* A bunch of code*/
}

Это никогда не доберется туда. Что более неприятно, так это то, что если я заменю ImageButton на

<asp:LinkButton ID="ImageButton_DeleteRun" Text="X"
runat="server" OnClick="QueryDelete" CommandName="QueryDelete" 
CommandArgument='<%# DataBinder.Eval(Container,"DataItem.QueryGuid") %>'/>

Работает отлично. Что-то не так с ImageButton? Я что-то упустил?

РЕДАКТИРОВАТЬ - Новая информация

Обычно при рендеринге кнопки изображения href отсутствует.

Weird -

<input type="image" style="height: 10px; width: 10px; border-width: 0px;" src="../Assets/Images/Misc/delete.jpg"
id="ctl00_ctl00_ctl00_AllContent_MainContent_MainContent_controlPanelQueryHistory_saved_RadGridQueryHistory_ctl00_ctl04_ImageButton1"
name="ctl00$ctl00$ctl00$AllContent$MainContent$MainContent$controlPanelQueryHistory_saved$RadGridQueryHistory$ctl00$ctl04$ImageButton1"/>

<a
href="javascript:__doPostBack('ctl00$ctl00$ctl00$AllContent$MainContent$MainContent$controlPanelQueryHistory_saved$RadGridQueryHistory$ctl00$ctl04$ImageButton_DeleteRun','')"
id="ctl00_ctl00_ctl00_AllContent_MainContent_MainContent_controlPanelQueryHistory_saved_RadGridQueryHistory_ctl00_ctl04_ImageButton_DeleteRun">delete</a>

Ответы [ 6 ]

4 голосов
/ 13 ноября 2009

В качестве обходного пути вы можете попробовать обернуть изображение в LinkButton.

<asp:LinkButton ID="ImageButton_DeleteRun" Text="X"
runat="server" OnClick="QueryDelete" CommandName="QueryDelete" 
CommandArgument='<%# DataBinder.Eval(Container,"DataItem.QueryGuid") %>'>
    <img src="~/Assets/Images/Misc/delete.png" /> 
</asp:LinkButton>
0 голосов
/ 13 ноября 2009

Как вы получаете аргументы команды в OnClick? У вас есть EventArgs. Обработчик OnCommand имеет CommandEventArgs, содержащие CommandName и CommandArguments:

protected void image_Command(object sender, CommandEventArgs e)
{
}

Имеет смысл использовать OnCommand.

0 голосов
/ 13 ноября 2009

Поместите оба типа ссылок на страницу, а затем «Просмотр источника» на получившейся странице. Это может дать вам некоторые подсказки относительно того, что происходит. Это может быть рендеринг ImageButton таким образом, что JavaScript или CSS портят.

0 голосов
/ 13 ноября 2009

Глупый вопрос - но отображает ли ImageUrl верное изображение или red-x?

0 голосов
/ 13 ноября 2009

Вы можете попробовать заменить OnClick на OnCommand, чтобы посмотреть, решит ли это проблему.

0 голосов
/ 13 ноября 2009

Может быть страница проверяется? Если это так, попробуйте добавить CausesValidation = false в ImageButton.

...