0

ソースを表示すると、次のような ASP.NET DDL があります。

<select name="testControl" onchange="DoCustomStuff();setTimeout('__doPostBack(\'testControl\',\'\')', 0)" id="testControl">

.cs ページでは次のようになります。

<asp:DropDownList ID="testControl" runat="server" onchange="DoCustomStuff()" OnSelectedIndexChanged="testControl_Changed" AutoPostBack="true" />

このような DDL で onchange と AutoPostBack="true" を使用すると問題が発生することはありますか? DoCustomStuff() が正しく呼び出されていないように見えるユーザーがいるため、お尋ねします。DoCustomStuff() が作業を完了する前に __doPostBack() を実行できるかどうか疑問に思っています。

4

1 に答える 1

0

次のように、ポストバック参照を手動で添付してみてください。

Page.ClientScript.RegisterClientScriptBlock(
  typeof(_Default), 
  "PageScripts", 
  string.Format("function DoCustomStuff() { /* Your Code Here */ {0} }", Page.ClientScript.GetPostBackEventReference(testControl, string.Empty))
);

testControl.Attributes["onchange"] =  "DoCustomStuff();";

これにより、ポストバッククライアント側の参照が得られます。

Page.ClientScript.GetPostBackEventReference(testControl, string.Empty))
于 2009-03-11T15:07:55.677 に答える