0

ItemCommand で奇妙な問題に直面しています。ユーザー コントロールの一部である radGrid があります。このユーザー コントロールは別の aspx ページの一部として追加され、ItemCommand がトリガーされ、GridButtonColumn のボタンがクリックされると正常に動作します。ただし、このユーザー コントロールが別のユーザー コントロール内に追加されると、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 -> .aspx ページに含まれる RecipientsList。

    <%@ 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 が機能しない理由として考えられることについて、誰かが私を案内してもらえますか? この問題をデバッグする方法がわかりません。

4

2 に答える 2

0

AJAX 設定がネストされていないことを確認します (たとえば、ヘッダーまたは TabSlideOutControl コントロールのどこかに)。それらをネストすると、ノードが二重に破棄される可能性があります。

RadAjaxPanel を asp:UpdatePanel または RadAjaxManager/RadAjaxManagerProxy 設定に置き換えてみてください。

AJAX 要求を壊す問題が発生した場合に備えて、ページの HTML 全体が有効であることを確認してください。

実行中にスクリプトまたはサーバー側のエラーがないことを確認してください。

于 2015-11-04T08:20:50.130 に答える
0

ItemCreatedのイベント内で、そのリンク ボタンの登録ポストバックでRadGridボタンを登録します。RadScriptManagerAsynchronous

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_Clickid を使用して渡します。CommandArgument

これが役に立ったことを願っています。

于 2015-10-28T13:06:34.470 に答える