3

私は単純な ASP Webform プロジェクト (asp フレームワーク 4.0) に取り組んでおり、VS 2010 を使用しています。

私のウェブサイトには、UpdatePanelsを使用したいページがいくつかあります。
私の Web サイトの別のページで、AjaxControlToolkit ライブラリに含まれているModalPopupExtenderコントロールを使用する必要があります。

私が遭遇した問題は、プロジェクトに AjaxControlToolkit ライブラリを含めると、UpdatePanels がまったく機能しないことです(このライブラリのコンポーネントを実装する必要はなく、プロジェクトに参照を追加するだけです)。
ライブラリへの参照を削除すると、正常に動作します。


これらの両方の要素を調停する方法についてのアイデアはありますか? UpdatePanel と AjaxControlToolkit lib ?

アドバイスありがとうございました

私が使用する単純な UpdatePanel コードは次のとおりです。

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand" OnItemDataBound="Repeater1_ItemDataBound">
    <ItemTemplate>
        <asp:LinkButton ID="lnk" runat="server" Text="show" CommandName="show"></asp:LinkButton>
    </ItemTemplate>
</asp:Repeater>


<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Label runat="server" ID="label1"></asp:Label>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Repeater1" EventName="ItemCommand" />
    </Triggers>
</asp:UpdatePanel>

コードビハインドでは、これを使用します:

protected void Page_Load(object sender, EventArgs e)
    {
        Repeater1.DataSource = new List<String>(){"zero", "un", "deux", "trois","quatre"};
        Repeater1.DataBind();
    }

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        LinkButton lnk = ((LinkButton)e.Item.FindControl("lnk"));
        lnk.CommandArgument = e.Item.ItemIndex.ToString();
    }

    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName == "show")
            label1.Text = "You click" + e.CommandArgument;
    }
4

1 に答える 1

0

AjaxToolKit.dllの参照を追加したときに同じ問題が発生したため、この投稿を見つけました。次に、問題の可能性を探していたところ、javascriptエラーを確認するコメントでこれを見つけ、解決策でした:D

コードに、更新を開始するためのスクリプトがありました

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);

function BeginRequestHandler(sender, args) 
{
   var elementID = sender._activeElement.id;
   ...
}

「TypeError:sender._activeElement is undefined」を取得していた後、変更しました

var elementID = sender._activeElement.id;

var elementID = sender._postBackSettings.sourceElement.id;

そして私の問題を解決しました。

dllへの参照がなくても問題なく動作していましたが、削除すると. 参照により、要素のプロパティを変更する必要がありました。

于 2013-05-21T09:13:47.427 に答える