ASP.NET Repeater 中的 ImageButton 不会触发 OnClick 事件处理程序

2023-12-03

我在中继器控件内有一个 ImageButton。我已将事件处理程序附加到 ImageButton 的 OnClick 事件。但是当我单击 ImageButton 时,事件不会被触发。如果我遗漏了什么,请告诉我。谢谢

我已附上 aspx 页面和代码隐藏文件

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddTag.aspx.cs" Inherits="IV.Web.Searchv2UI.AddTag.AddTag" EnableEventValidation="false" EnableViewState="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>

    </title>
    <style type="text/css">
    .add-tag-color-required
{
    color:Red;
}

.add-tag-float-right
{
    float:right;
}

    </style>
    <script type="text/javascript">
        function GetRadWindow() {
            var oWindow = null;
            if (window.radWindow)
                oWindow = window.RadWindow; //Will work in Moz in all cases, including classic dialog      
            else if (window.frameElement.radWindow)
                oWindow = window.frameElement.radWindow; //IE (and Moz as well)      
            return oWindow;
        }

        function Cancel() {
            // clean save search fields
            document.forms[0].reset();

            //get a reference to the current RadWindow
            var oWindow = GetRadWindow();
            oWindow.close();
        }

    </script>
</head>
<body >
    <form id="formAddTag" runat="server">

        <%-- RadScriptManager --%>
        <telerik:RadScriptManager ID="radScriptManager" runat="server" />
        <%-- RadScriptManager --%>        

         <%-- Telerik Decorator --%>
        <telerik:RadFormDecorator id="radFormDecorator" runat="server" DecoratedControls="All" />
        <%-- Telerik Decorator --%>

        <%-- StyleSheetManager --%>
        <runway:StyleSheetManager ID="runwayStyleSheetManager" runat="server" />
        <%-- StyleSheetManager --%>




        <telerik:RadAjaxLoadingPanel ID="radAjaxLoadingPanel" runat="server" />

        <telerik:RadAjaxPanel ID="radAjaxPanelAddTag" runat="server" CssClass="span-12" LoadingPanelID="radAjaxLoadingPanel">
            <div class="span-12 last height-2">
                <div class="span-7 height-2">

                        <asp:Label ID="labelAddTag" Text=" Tags" runat="server" CssClass="color-a-4" />
                        <br/>
                        <span>&nbsp;Enter tags seperated by commas.</span>
                    </div>
                </div>
                <br/>
                <div class="span-7 last height-2">
                    <telerik:RadTextBox ID="radTextBoxTags" runat="server" MaxLength="45" Width="98%" />
                    <asp:RequiredFieldValidator ID="requiredFieldValidatorSearchName" runat="server" ControlToValidate="radTextBoxTags"
                                                Display="None" ErrorMessage="Tag is required.">
                    </asp:RequiredFieldValidator>
                </div>


                <div class="span-5 last height-2">

                        <asp:Button id="buttonAdd" runat="server" Text="Add" CausesValidation="true" Width="45px" OnClick="buttonAdd_Click" />
                        <asp:Button id="buttonCancel" runat="server" Text="Cancel" CausesValidation="false" Width="50px" OnClientClick="Cancel(); return false;" />
                 </div>
                   <br />     
                    <div class="span-12">     
                   <asp:Repeater ID="repeaterTag" runat="server">

                    <ItemTemplate>

                        <asp:Label ID="labelTag" runat="server" Text="<%#Container.DataItem %>"></asp:Label>
                        <asp:ImageButton runat="server" ID="imageButtonRemove" ImageUrl="~/App_Themes/ChromeTheme/Images/message_close_9x9.png" ToolTip="Remove" OnClick="imageButtonRemove_Click" />

                        <span>&nbsp;</span>

                     </ItemTemplate>
                   </asp:Repeater>
               </div>  

        </telerik:RadAjaxPanel>   
        </form>
</body>
</html>

文件背后的代码如下。

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace IV.Web.Searchv2UI.AddTag
{
    public partial class AddTag : System.Web.UI.Page
    {


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                List<string> tags = new List<string>();

                tags.Add("semiconductor");
                tags.Add("electronics");
                tags.Add("us");

                ViewState["Tags"] = tags;

                repeaterTag.DataSource = tags;
                repeaterTag.DataBind();



            }
        }

        protected void buttonAdd_Click(object sender, EventArgs e)
        {
            List<string> tags = (List<string>)ViewState["Tags"];
            string[] newTags = radTextBoxTags.Text.Split(',');
            if (newTags.Length > 0)
            {

                foreach(string tag in newTags)
                {
                    if (!tags.Contains(tag))
                    {
                        tags.Add(tag);
                    }
                }
            }
            ViewState["Tags"] = tags;
            repeaterTag.DataSource = tags;
            repeaterTag.DataBind();

            radTextBoxTags.Text = string.Empty;
        }

        protected void imageButtonRemove_Click(object sender, EventArgs e)
        {
            List<string> tags = (List<string>)ViewState["Tags"];
            ImageButton button = (ImageButton)sender;

            Panel panel = (Panel)button.Parent;
            string tag = ((Label)(panel.Controls[1])).Text;

            tags.Remove(tag);
            ViewState["Tags"] = tags;
            repeaterTag.DataSource = tags;
            repeaterTag.DataBind();
        }
    }
}

在中继器控件内部,按钮的行为方式与外部按钮的行为方式不同。

您需要设置“命令名称“ 按钮的属性并且在Repeater.ItemCommand事件检查该命令名称并在那里执行逻辑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Repeater 中的 ImageButton 不会触发 OnClick 事件处理程序 的相关文章

随机推荐

  • Laravel 迁移 150 错误

    我的迁移文件有错误 但是我找不到任何错误解决方案 当我运行迁移命令时 我在以下系统上收到该错误 Illuminate Database QueryException SQLSTATE HY000 General error 1005 Can
  • 使用shinymanager R嵌入图像

    我有一个闪亮的应用程序 我使用闪亮管理器包来处理用户身份验证 我正在尝试添加 www 文件夹中的图片作为身份验证背景 这是一个工作示例 当您运行该应用程序时 您当前将在背景中看到 R 徽标 我的 www 文件夹中有一个名为 pabackgr
  • SSIS 派生列 - 解析中断返回之间的文本

    我有一个来自 SQL Server 源的文本字段 它是一个电话号码字段 通常具有以下格式 Home 555 555 1212 Work 555 555 1212 Cell 555 555 1212 Emergency 555 555 121
  • 二进制零和 ASCII 字符零之间的区别

    gcc GCC 4 8 1 c89 Hello 我正在读一本关于指针的书 并使用此代码作为示例 memset buffer 0 sizeof buffer 将填充二进制零而不是字符零来填充缓冲区 我只是想知道二进制和字符零有什么区别 我以为
  • 如何创建 stackoverflow 类型的按钮?

    我想知道如何创建堆栈溢出类型按钮 如下图所示的按钮 是否可以使用 ExtJS 创建这样的按钮 不久前有人对此进行了扩展 它不是exactly像 SO 按钮一样 但是您可以稍微使用一下 CSS 并可能添加一些覆盖以使其达到 100 我认为第四
  • 将 Silverlight 3 转换为 4 时出现问题

    我目前正在尝试将 Silverlight 3 应用程序转换为 Silverlight 4 但遇到了问题 一切都编译正确 但当我运行它时 我在大约 70 加载时出现错误 我很困惑 因为我很确定这是一个 javascript 错误 抛出新的错误
  • 为什么 Valgrind 指出我的 std::map 实现会产生内存泄漏?

    Valgrind 输出以下内容 14446 2 976 176 direct 2 800 indirect bytes in 2 blocks are definitely lost in loss record 23 of 33 1444
  • boost::带有 bool 和 string 的变体

    我遇到麻烦了boost variant 使用升压1 67 0 当我的模板参数列表包含两者时bool and std string 任何应被视为字符串的变体对象似乎都隐式绑定到 bool 例如 using Varval boost varia
  • 根据 .net 后端服务器验证 Google ID

    我正在尝试为我的应用程序实现谷歌登录 后端服务器将是c net 有人可以给我指明方向 或者解释如何在 Net 中进行后端验证吗 他们提供了 java 示例并建议使用 googles api https developers google c
  • 使用 proguard 混淆 JAR 时的奇怪行为

    我正在尝试使用 Proguard 来混淆 Android JAR 4 7 但 4 6 也有问题 我可以将问题分解为一个简单的示例项目 问题 对于some函数 不清楚出于什么原因 公开函数的参数名称丢失 有时 混乱 真的 我想首先关注 丢失
  • 实体框架取消长时间运行的查询

    我是 TPL 的新手 我正在使用 TPL 对数据库进行一些异步调用 下面多次调用 GetDocumentAsync 方法 并做好将任务卸载到不同线程上的工作 以保持 UI 线程的响应能力 这里有两个目标 1 保持 UI 线程响应能力 2 让
  • Android Pie 渲染进程崩溃webview(9)

    尝试从资产文件夹加载 HTML 文件 应用程序在 Android v8 1 之前运行良好 但在 Android Pie 9 设备中崩溃 根据调试日志 WebView 渲染进程似乎崩溃了 正在寻找解决此问题的方法 请帮助和建议 提前致谢 从日
  • 如何在 Perl 中解析 strftime 格式的字符串?

    我是 Perl 新手 我想知道是否有 strftime 的反函数 看 use POSIX qw strftime print strftime YT mT d TTTT H M S localtime 我得到 2009T08T14 TTTT
  • Entity Framework Core 1.0 CurrentValues.SetValues() 不存在

    我正在尝试使用 Entity Framework Core 1 0 RC 1 更新实体及其相关子实体 其中实体与 DbContext 分离 我之前已经使用类似于此中描述的解决方案完成了此操作answer 但是 我们似乎不再能够使用 Enti
  • 不使用 64 位 int 将两个 32 位数字相乘

    我们正在使用以下算法进行一些 32 位 32 位乘法 让我们想要将 a 32 位 与 b 32 位 相乘 两者都有符号 a ah 2 16 al ah 高 16 位 al 低 16 位 b bh 2 16 bl bh 高 16 位 bl 低
  • delphi服务应用程序在15秒后停止,计时器不执行

    我想在 Delphi 中制作服务应用程序 每天下午 02 00 运行并复制一些文件 所以我用了定时器 但控制不会发生计时器事件并且服务会在 15 秒内终止 我写了一个关于定时器事件的代码 如何在服务中使用计时器 请帮忙 提前致谢 我的代码在
  • setTimeout(myFunction, 5000); vs setTimeout(myFunction(), 5000);

    我正在研究 setTimeout 函数 此代码按预期运行 function myFunction console log test setTimeout myFunction 1000 myFunction 它将每隔一个 测试 打印到控制台
  • 如何用 pandas 对浮点数进行分类

    这段代码一直有效 直到我将 python 2 x 升级到 3 x 我有一个由 3 列 ipk1 ipk2 ipk3 组成的 df ipk1 ipk2 ipk3 由浮点数 0 4 0 组成 我想把它们装进字符串中 数据看起来像这样 ipk1
  • Eclipse 中 Storm 集群关闭

    我有一个问题 我知道有麻烦 但找不到解决方案 集群没有关闭 抛出 IOException I O 方法不起作用 因为 Windows 不允许临时文件夹 我的意思是这个路径 C Users Mert AppData Local Temp 8b
  • ASP.NET Repeater 中的 ImageButton 不会触发 OnClick 事件处理程序

    我在中继器控件内有一个 ImageButton 我已将事件处理程序附加到 ImageButton 的 OnClick 事件 但是当我单击 ImageButton 时 事件不会被触发 如果我遗漏了什么 请告诉我 谢谢 我已附上 aspx 页面