我花了将近3个小时来处理以下案件:
我尝试了很多情况,但我找不到明确的例子。
我有一个更新面板,当我按下其中的特定图像按钮时,会显示一些弹出窗口。 (弹出窗口最初是隐藏的,当请求完成后,display:none
被删除=>它看起来很好)
function BeginRequestHandler(sender, args) {
}
function EndRequestHandler(sender, args) {
document.getElementById('popup').style.display = '';
document.getElementById('overlay').style.display = '';
}
嗯,问题是我需要创建一个js函数来执行asyncPostBack,因为这个js函数会在点击该控件的某些部分时从flash控件中调用,所以我想模拟我的点击图片。(因为点击此弹出窗口会显示如上所示)
问题在于我无法在任何地方找到这样的例子。 这个js函数会收到一个参数,所以当我做回发时,我希望能够在服务器端获得该参数。(这个参数似乎是主要问题= - 我如何将它发送到我在回发时服务器?)。
对不起,如果我不是很清楚,但是你可以给我一些这方面或者例子的文件吗?
非常感谢!
更新 请注意我在UpdatePanel中使用ImageButton的第一个案例:
<asp:ImageButton ID="lnkDetails" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Logo") %>'
AlternateText='<%# DataBinder.Eval(Container.DataItem, "Name") %>' OnCommand="lnkDetails_Command"
CommandArgument='<%# DataBinder.Eval(Container.DataItem, "TenantID") %>' Text="Click">
</asp:ImageButton></li>
我唯一需要的是“模拟”这个点击,使用javascript来回复异步(因为当我从flash调用时,flash控件会调用我的js方法进行回发)
答案 0 :(得分:2)
从javascript发起异步回发:
__doPostBack(target,args)
target是您要定位的UpdatePanel的UniqueID。通常它只能传递一个空字符串(将刷新所有自动更新面板)。
第二个参数是可以用于任何你想要的参数。
服务器上都可以使用这两种方法:
Request.Form["__EVENTTARGET"]
Request.Form["__EVENTARGUMENT"]
答案 1 :(得分:1)
这应该很有效:
<asp:ImageButton ID="ImageButton1" runat="server" OnClientClick='return doSomething(<%#Eval("SomeValue")%>);' />
编辑:尝试使用以下方法包装JavaScript函数:
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function () {
doSomething = function(argument){
__doPostBack("<%=ImageButton1.ClientID%>", argument);
return true; //don't know if you need this
}
});
编辑:检查您的ScriptManager
并确保EnablePartialRendering
设置为true。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" ... />
在代码隐藏中:
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
//call the RaisePostBack event
base.RaisePostBackEvent(source, eventArgument);
if (source == ImageButton1)
{
string arg = eventArgument;
}
}