a和b两页面都有一DataList,当某行处于Select时,该行出现一按钮列,单击一按钮,弹出同一模式窗体,在模式窗体中做些操作后,能刷新父窗体,模式窗体本身不关闭,在a和b页面中DataList的ItemDataBound事件的代码如下:
if(e.Item.ItemType == ListItemType.SelectedItem)
{
btnUniversalQuery = (Button)e.Item.FindControl("btnUniversalQuery");
strReportID = dlReportDefine.DataKeys[e.Item.ItemIndex].ToString();
string strUniversalQueryUrl = "UniversalQuery.aspx?QueryGroupID=" + strReportID;
btnUniversalQuery.Attributes.Add("onclick", "javascript:win=showModalDialog('" + strUniversalQueryUrl +"',window,'dialogWidth=266px;dialogHeight=230px;status=no;scroll=no;resizable=no;');window.opener=win;");
}模式窗体中刷新父窗体的代码如下:
Session["QuerySQL"] = tbQueryConditionSQL.Text + " " + strSQLOrder;//父窗体读取Session,加载数据
Page.RegisterStartupScript("","<script language='javascript'>window.dialogArguments.location.reload();</script>");现在的问题是,有时,能弹出模式窗体而且能刷新父窗体,有时连模式窗体都无法弹出,而有时弹出模式窗体又无法刷新父窗体,好象是随机的,不应该是这样的啊?请大虾看看。
if(e.Item.ItemType == ListItemType.SelectedItem)
{
btnUniversalQuery = (Button)e.Item.FindControl("btnUniversalQuery");
strReportID = dlReportDefine.DataKeys[e.Item.ItemIndex].ToString();
string strUniversalQueryUrl = "UniversalQuery.aspx?QueryGroupID=" + strReportID;
btnUniversalQuery.Attributes.Add("onclick", "javascript:win=showModalDialog('" + strUniversalQueryUrl +"',window,'dialogWidth=266px;dialogHeight=230px;status=no;scroll=no;resizable=no;');window.opener=win;");
}模式窗体中刷新父窗体的代码如下:
Session["QuerySQL"] = tbQueryConditionSQL.Text + " " + strSQLOrder;//父窗体读取Session,加载数据
Page.RegisterStartupScript("","<script language='javascript'>window.dialogArguments.location.reload();</script>");现在的问题是,有时,能弹出模式窗体而且能刷新父窗体,有时连模式窗体都无法弹出,而有时弹出模式窗体又无法刷新父窗体,好象是随机的,不应该是这样的啊?请大虾看看。
弹出应该是没问题的啊,但是,有时连弹出都有问题。
Public Sub DataGrid_Control(ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
Dim Obj As Object
If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
Obj = e.Item.FindControl("Txt")
Obj.Attributes.Add("onkeydown", "if(event.keyCode==13) {var a=new Array(DataGrid1__ctl" + Trim(Str(e.Item.ItemIndex + 2)) + "_Txt.value); window.opener=null;window.returnValue =a;window.close()}")
End If
End Sub
这个可能能够解决快捷键的问题,现在我准备不用那个,就鼠标单击就可以了。
很谢谢你:)
<title>ErrorCatchForm</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<base target="_self">
<% Response.Expires = -1 %>
</HEAD>
<base target="_self">
<% Response.Expires = 0 %>
}
这代码你最好写在PAGELOAD中
因为你写在那里页面刷新一下就没了
1.模态窗口的打开
2.模态窗口的关闭
3.模态窗口的传递参数。
4.其他。
1.window.showModalDialog("DialogPage.aspx","newwin","dialogHeight: 200px; dialogWidth: 150px; dialogTop: 458px; dialogLeft: 166px; edge: Raised; center: Yes; help: Yes; resizable: Yes; status: Yes;");2.window.close();3.传值
ParentPage.aspx:
window.showModalDialog("DialogPage.aspx?para1=aaa¶2=bbb");DialogPage.aspx:
string str1=Request.QueryString["para1"].toString();
string str2=Request.QueryString["para2"].toString();返回值
DialogPage.aspx:
window.returnValue="aaa";ParentPage.aspx:
var str=window.showModalDialog("DialogPage.aspx");4.
aspx页面在showmodeldialog情况下为什么一提交就重新打开一个页面?
showmodaldialog打开的页面中在<head></head>之间加入一行:<base target="_self">
这样你在PAGELOAD中加一段代码:if dlReportDefine.selectedindex<>-1 thenbtnUniversalQuery = (Button)dlReportDefine.Items(dlReportDefine.selectedindex).FindControl("btnUniversalQuery");
strReportID = dlReportDefine.DataKeys[e.Item.ItemIndex].ToString();
string strUniversalQueryUrl = "UniversalQuery.aspx?QueryGroupID=" + strReportID;
btnUniversalQuery.Attributes.Add("onclick", "javascript:win=showModalDialog('" + strUniversalQueryUrl +"',window,'dialogWidth=266px;dialogHeight=230px;status=no;scroll=no;resizable=no;');window.opener=win;");
}end if
然后关闭后才传给父页面。在打开模式对话框的时候操作父窗体是不合理的做法。换句话说,你应该使用非模式对话框:window.showModelessDialog()
回复人: inelm(木野狐)(坚持手写HTML是我唯一的选择) ( ) 信誉:100 模式窗口不是这么用的。
因为只要我改变DataList的状态,就会重新数据绑定,自然也就有onclick事件了。而且,在其中一个页面中好象只偶尔无法刷新,而另一个页面就很糟糕了。
那怎么在cs中引用这个字符串呢?
那怎么在cs中引用这个字符串呢?你可以在页面中加一个hidden控件.id=hid;
hid.value=window.showModalDialog("DialogPage.aspx");
然后提交 Form1.submit 或__dopostback
你在 cs中就可得到hid.value