【问题标题】:placing link button inside update panel not firing the click event of link button将链接按钮放在更新面板内不会触发链接按钮的单击事件
【发布时间】:2014-04-24 05:19:17
【问题描述】:
        <asp:ScriptManager ID="ScriptManager1" runat="server">                                  
    </asp:ScriptManager<asp:UpdatePanel ID="UpdatePanel1"runat="server">
    <ContentTemplate>
    <asp:Timer runat="server" ID="Timer2"   Interval="60" ontick="Timer1_Tick"/>
    <asp:DataList ID="DataList1" runat="server" RepeatColumns="1" onitemcommand="DataList1_ItemCommand">
    <ItemTemplate>
    <b>Test Name:</b> <%# DataBinder.Eval(Container.DataItem, "Name")%> <br />
    <b>Test Phone:</b> <%# DataBinder.Eval(Container.DataItem, "Phone")%> <br />
    <asp:LinkButton ID="btnView" runat="server" Text="View" CommandName="ShowDetails" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Name")%>' OnCommand="btnView_Command"></asp:LinkButton>
    </ItemTemplate>
    </asp:DataList>
    </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="Timer1"     EventName="Tick" />
    </Triggers>
    </asp:UpdatePanel>
    <asp:Panel ID="panel2" runat="server" Visible="false"></asp:Panel>
Code Behind :


    protected void dlBundleRequests_ItemCommand(object source, DataListCommandEventArgs e)
    {
        panel1.Visible = false;
        panel2.Visible = true;

        if (e.CommandName == "ShowDetails")// null)
        {
            Session["Name"] = e.CommandArgument.ToString();
            //Show Panel2
        }
    }
    protected void Timer1_Tick(object sender, EventArgs e)
    {
         //Binding DataList1
    }
    protected void btnView_Command(Object sender, CommandEventArgs e)
    {
      //set visibility true for Panel2
     }

添加更新面板和定时器控件的必要性是每5分钟自动刷新datalist1。请帮我解决这个问题。添加这两个控件后,链接按钮停止工作。

【问题讨论】:

    标签: c# asp.net updatepanel asplinkbutton


    【解决方案1】:

    试试这个..

    <Triggers>
         <asp:AsyncPostBackTrigger ControlID="btnView"/>  
    </Triggers>
    

    【讨论】:

    • 给我错误:在 UpdatePanel 'upBundleReq' 中找不到触发器的 ID 为 'btnView' 的控件。但是 'btnView' 存在于 aspx 页面中。
    【解决方案2】:

    你必须在linkbutton标签中设置CommandArgument和CommandName,然后使用Command事件而不是Click

        <ItemTemplate>
                <b>Test Name:</b> <%# DataBinder.Eval(Container.DataItem, "Name")%> <br />
                <b>Test Phone:</b> <%# DataBinder.Eval(Container.DataItem, "Phone")%> <br />
                    <asp:LinkButton ID="btnView" runat="server" Text="View" OnCommand="btnView_Click" CommandName="ShowDetails" CommandArgument='%# DataBinder.Eval(Container.DataItem, "Phone")%' ></asp:LinkButton>
    </ItemTemplate>
    

    然后在代码隐藏中处理该参数.. CommandArgument in MSDN

    【讨论】:

    • :我试过这个,在调试时它正在触发事件。但在 UI 中它没有显示任何内容。错误消息是:无法解析从服务器接收到的消息。此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用服务器跟踪修改响应时..我在 IE 中尝试过
    • @user1676709 使用您自己的代码并在 Timer1_Tick 中将间隔设置为 50000 以每 5 分钟打勾。随着每次页面加载的更改,您的面板已更新,并且每 5 分钟自动更新一次...
    • @user1676709 onclick evnet 不起作用,因为您的页面/面板正在立即加载/刷新...
    • Datalist 的 ItemCommand 事件正在放置必须在视图按钮的 ONCLICK 上执行的代码,而不是在 datalist 控件内部的视图 btn 的 Onclick 上。我已经完全删除了视图按钮的 Onclick 事件
    • :在数据列表中我有查看链接按钮。需要每 5 分钟刷新一次数据列表。实现刷新功能(计时器控制)后遇到问题(查看链接按钮不做回发)。所以实施了解决方案由you.ie建议,而不是查看按钮点击事件,在datalist的ItemCOMmand事件中编写代码。所以每当用户点击查看链接按钮时,Itemcommand事件将触发并执行与查看按钮相关的代码。但不幸的是没有显示任何内容。但是代码与调试时查看按钮执行有关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多