关于调用__doPostBack的问题(急~~~~~~~~~)
我在一个控件的OnClick方法中打开了一个模式对话框,等待对话框返回后调用__doPostBack提交
但是请求并没有回到服务器端,而是又打开了一个IE窗口。。。。
请问应该如何解决?
//bow
问题点数:100、回复次数:15Top
1 楼Pipiloo(皮皮鲁)回复于 2004-12-01 20:40:58 得分 0
能不能说得清楚一点,方便的话最好贴出代码Top
2 楼yizhili(梨子)回复于 2004-12-01 20:45:08 得分 0
<script language='javascript'>
function addproduct( redirectPage, SendID, CallBackID) {
var ret = window.showModalDialog( redirectPage );
if ( ret != undefined ) {
document.getElementById( SendID ).value = ret;
__doPastBack( CallBackID, '');
}
}
</script>
这样一段javascript,然而__doPastBack并没有提交到服务器,CallBackID的事件并没有执行,而是把redirectPage又显示了一遍(在一个新窗口里,不是模式对话框)
对addproduct的调用:
<input id="CallBackControl1" RedirectPage="Default.aspx" name="CallBackControl1" onclick="javascript:addproduct( 'WebForm1.aspx','CallBackControl1','CallBackControl1');" value="请点击此处选择" readonly="readonly" style="Z-INDEX: 109; LEFT: 344px; POSITION: absolute; TOP: 440px" />
Top
3 楼net_lover(【孟子E章】)回复于 2004-12-01 20:47:01 得分 60
http://dotnet.aspx.cc/ShowDetail.aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4Top
4 楼yizhili(梨子)回复于 2004-12-01 20:58:55 得分 0
谢谢
但是虽然新窗口不跳出了,事件却同样没有发送呀?
另外请教一下如何把<base target="_self" />之类的语句写到<head></head>之间,因为我是用一个共同基类来做ModalDialog的Top
5 楼yizhili(梨子)回复于 2004-12-01 20:59:39 得分 0
汗……没有postback的原因找到了……拼写错误……Top
6 楼yizhili(梨子)回复于 2004-12-01 21:00:22 得分 0
个么问一下,为什么每次都会打开一个新窗口呢?Top
7 楼bitm(爱思派)回复于 2004-12-01 21:24:54 得分 0
是你自已设的onclick="javascript:addproduct( 'WebForm1.aspx','CallBackControl1','CallBackControl1');"Top
8 楼yizhili(梨子)回复于 2004-12-01 21:28:24 得分 0
我是问ModalDialog结束之后啊……Top
9 楼yizhili(梨子)回复于 2004-12-01 21:30:07 得分 0
想问一下javascript中变量作用域是怎么算的啊?
我把__doPastBack( CallBackID, '');改成__doPastBack( CallBackID, ret);
但得到的argument却是空字符串Top
10 楼fa2002(风翔万里)回复于 2004-12-01 21:41:21 得分 15
这个问题的思路就不对,至少表明你的思维方式还停留在传统的C/S阶段。作为技术的细节来说,也不能在ASP.NET中直接使用_doPastBack。这样做不单不可学,而且有可能造成很多连锁不可意料的连锁反应。Top
11 楼Net_Soul(网 魂)回复于 2004-12-01 21:41:59 得分 5
试一下加
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
Page.GetPostBackEventReference(this,"");
}Top
12 楼yizhili(梨子)回复于 2004-12-01 21:48:18 得分 0
to fa2002:
为什么要这么说呢?
正是ASP.NET在大量使用__doPostBack(每一个LinkButton)
如果需要添加一些自定义事件的话,也得要用它啊
to Net_Soul:
谢谢,不过问题不在这儿。__doPostBack函数正确生成了
Top
13 楼zhy0101(莠)回复于 2004-12-01 21:58:39 得分 0
Page.GetPostBackEventReference 方法 (Control)
参数control要在服务器上处理回发的服务器控件。
返回值
可插入客户端事件处理程序的客户端函数调用的文本。
public class MyControl1 : Control, IPostBackEventHandler
{
public int Number
{
get
{
if ( ViewState["Number"] !=null )
return (int) ViewState["Number"];
return 50;
}
set
{
ViewState["Number"] = value;
}
}
public void RaisePostBackEvent(string eventArgument)
{
Number = Number + 1;
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write("The Number is " + Number.ToString() + " (" );
writer.Write("<a href=\"javascript:" + Page.GetPostBackEventReference(this) + "\">Increase Number</a>");
}
}
Top
14 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2004-12-01 23:03:22 得分 15
http://community.csdn.net/Expert/topic/2637/2637793.xml?temp=.6674158Top
15 楼killerliu(越学越无知。。。。。-_-)回复于 2004-12-01 23:23:57 得分 5
在<head>中加入<base=self>Top




