[英]Issue with ItemCommand not being triggered for a RadGrid
我遇到了ItemCommand的怪異問題。 我有一個radGrid,它是用戶控件的一部分。 此用戶控件被添加為另一個aspx頁面的一部分,並且當單擊GridButtonColumn中的按鈕時,ItemCommand被觸發並且可以正常工作。 但是,當將此用戶控件添加到另一個用戶控件中時,根本不會觸發ItemCommand。 此RadGrid是RadAjaxPanel的一部分。 刪除RadAjaxPanel后,將在所有情況下觸發ItemCommand。
這是用戶控件的外觀
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Charting" Assembly="Telerik.Web.UI" %>
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="RecipientsList.ascx.vb" Inherits="Pages.Email.Controls.RecipientsList" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<table style="width:90.5%;" align="center">
<tr>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="WebBlue">
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1">
<telerik:RadGrid ID="radSelect" runat="server" PageSize="20" Width="100%" FooterStyle-BackColor="AliceBlue" AllowFilteringByColumn="True" AllowSorting="True"
AllowPaging="True" AutoGenerateColumns="False" OnUpdateCommand ="radSelect_UpdateCommand"
ResolvedRenderMode="Classic" CellSpacing="-1" OnItemCommand="radSelect_ItemCommand"
OnNeedDataSource="radSelect_NeedDataSource" CssClass="RadGridMasterDiv"><PagerStyle Mode="NextPrev" AlwaysVisible="true"></PagerStyle>
<GroupingSettings CaseSensitive="False" />
<MasterTableView Width="100%" AllowNaturalSort="False" DataKeyNames="EMessageID,EMsgReceiverID" ClientDataKeyNames="EMessageID">
<HeaderStyle Font-Bold="true" />
<CommandItemSettings ShowAddNewRecordButton="False" ShowRefreshButton="False" />
<Columns>
</telerik:GridBoundColumn>
<telerik:GridBoundColumn ReadOnly="true" DataField="SubjectLine" AllowFiltering="true" UniqueName="Subject" CurrentFilterFunction="Contains" AutoPostBackOnFilter="True" ShowFilterIcon="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn ReadOnly="true" DataField="DisplayStatus" UniqueName="Status" CurrentFilterFunction="Contains" AutoPostBackOnFilter="True" ShowFilterIcon="false">
</telerik:GridBoundColumn>
<telerik:GridButtonColumn UniqueName="ResendButton" CommandName="Resend">
</telerik:GridButtonColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<telerik:RadToolTip ID="RadToolTip1" runat="server" OffsetY="3" Position="TopCenter"
ShowCallout="false" Height="20px" ShowEvent="fromcode" />
</telerik:RadAjaxPanel>
</tr>
</table>
這是用戶控制正常運行的頁面
<%@ Register TagPrefix="header" TagName="Header" Src="../../Controls/Header.ascx" %>
<%@ Register TagPrefix="reclist" TagName="RescipentList" Src="Controls/RecipientsList.ascx" %>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="FailedEmails.aspx.vb" Inherits="Pages.Email.FailedEmails" smartNavigation="True" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<body MS_POSITIONING="FlowLayout" bottomMargin="10" leftMargin="5" topMargin="10" rightMargin="5">
<form id="Form1" method="post" runat="server">
<header:Header id="header" runat="server"></header:Header>
<reclist:RescipentList id="rList" runat="server" ></reclist:RescipentList>
</form>
</body>
這是另一個未觸發ItemCommand的控件。 這是我的控件的層次結構
標頭-> TabSlideOutControl-> RecipientsList,包含在.aspx頁面中。
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="TabSlideOutControl.ascx.vb"
Inherits="Pages.Controls.TabSlideOutControl" %>
<%@ Register TagPrefix="reclist" TagName="RescipentList" Src="~/Pages/Email/Controls/RecipientsList.ascx" %>
<table>
<tr>
<td id="wd-Theme1">
<div id="divFailedEmails" class="DIVEMAILS">
<reclist:RescipentList id="rList" runat="server" ></reclist:RescipentList>
</div>
</td>
</tr>
</table>
有人可以指導我了解ItemCommand不起作用的可能原因是什么? 我對如何調試此問題一無所知。
里面ItemCreated
的事件RadGrid
,注冊按鈕, RadScriptManager
寄存器Asynchronous
回傳該鏈接按鈕。
RadScriptManager scriptMan = RadScriptManager.GetCurrent(this);
LinkButton btn = e.Item.FindControl("yourButton") as LinkButton;
if(btn != null)
{
btn.Click += LinkButton1_Click;
scriptMan.RegisterAsyncPostBackControl(btn);
}
也不要在這里使用ItemCommand
,使用LinkButton1_Click
並將id作為CommandArgument
傳遞
希望這會有所幫助。
確保沒有嵌套的AJAX設置(例如,標頭或TabSlideOutControl控件中的某個位置)。 嵌套它們會導致節點的雙重處理。
嘗試用asp:UpdatePanel或RadAjaxManager / RadAjaxManagerProxy設置替換RadAjaxPanel。
確保頁面的整體HTML有效,以防出現中斷AJAX請求的問題。
確保在執行過程中沒有腳本或服務器端錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.