ImageButton没有击中codebind方法,但是如果用LinkBut​​ton替换了

时间:2009-11-12 23:33:22

标签: asp.net asp.net-ajax asp.net-3.5 imagebutton

我在radgridview columnn中构建了一个ImageButton。它的定义如下。

<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" />

正确加载。当我点击它时,我希望点击以下代码隐藏方法:

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。

怪异 -

<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 个答案:

答案 0 :(得分:4)

作为一种解决方法,您可以尝试在LinkBut​​ton中包装图像。

<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>

答案 1 :(得分:0)

也许页面正在验证?如果是这样,请尝试将CausesValidation = false添加到ImageButton。

答案 2 :(得分:0)

您可能想尝试用OnCommand替换OnClick,看看是否能解决问题。

答案 3 :(得分:0)

愚蠢的问题 - 但ImageUrl是渲染有效图像还是red-x?

答案 4 :(得分:0)

将两种链接类型放在页面中,然后在结果页面上显示“查看源”。这可能会为您提供有关正在发生的事情的线索。它可能以JavaScript或CSS搞乱的方式呈现ImageButton

答案 5 :(得分:0)

如何在OnClick中获取命令参数?你有一个EventArgs。 OnCommand处理程序包含CommandEventArgs,其中包含CommandName和CommandArguments:

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

使用OnCommand是有意义的。