asp.net 使用模态窗体问题,高手们快来救命~~~

慢慢积累 2009-12-14 06:13:10
问题是这样的:
我现在需要a.aspx点击按钮,弹出b.aspx模态页面。
我的做法是这样的:
a.aspx
页面中的js代码

<script language="javascript">
function Redirect(ID) {
if (window.showModalDialog("ModalDialog.aspx?id=" + ID, "window", "status=no;dialogWidth=700px;dialogHeight=350px;menu=no;resizeable=yes;scroll=yes;location=no") == "exit") {
window.location.reload();
}
}
</script>
<asp:Button ID="btn_upd" runat="server" Text="修改信息" onclick="btn_upd_Click" />
后台的修改按钮事件:
protected void btn_upd_Click(object sender, EventArgs e)
{
......//省略需要验证的相关操作
this.btn_upd.Attributes.Add("onclick", "Redirect('" + id + "')");
}

b.aspx
页面中的js代码

<script language="javascript">
function Redirect()
{
window.returnValue = 'exit';
self.close();
}
</script>

现在问题是:窗口是可以弹出来的,但是需要点击两次修改按钮才能弹出模态窗口。
跟踪代码后发现:第一次 this.btn_upd.Attributes.Add("onclick", "Redirect('" + id + "')"); 这句是运行过的,但是没有执行操作。点击第二次没有运行代码,模态窗体就直接弹出来了。
请问高手们这是哪里的问题呀?应该怎样修改才能够点击一次就直接弹出窗体呢???
感激不尽,希望大家能够帮帮我。。。
...全文
123 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
MaokFly 2009-12-15
  • 打赏
  • 举报
回复
dd
capay 2009-12-15
  • 打赏
  • 举报
回复
这么多高手。。。
Lovely_baby 2009-12-15
  • 打赏
  • 举报
回复

<script language="javascript" type="text/javascript">
function CheckSelected() {
var Tab = document.getElementById("MainTable");//table 的ID
var chks = Tab.getElementsByTagName("input");//table 中的Input ID 为IDS
if (chks == null)
return false;

for (i = 0; i < chks.length; i++) {
if (chks[i].type == "checkbox"
&& chks[i].id == "IDs"
&& chks[i].checked) {
return true;
}
}
return false;
}

function DeleteOneProduct(tempID) {
if (confirm("您确认删除所选?")) {
window.location.href = 'ResearchList.aspx?EditID=' + tempID + '';
}
}

function OnDelete() {
if (!CheckSelected()) {
alert("请选择目标后再删除!");
return false;
}
if (!confirm("确定删除选定项?")) {
return false;
}
}
</script>
Lovely_baby 2009-12-15
  • 打赏
  • 举报
回复
可以js转页的时候在
将id一参数的方式 传值~~
liu2835993 2009-12-15
  • 打赏
  • 举报
回复
第一个问题 你可以使用如下方法:



ScriptManager.RegisterStartupScript(this, this.GetType(), "click", "Redirect('" + id + "');", true);

liu2835993 2009-12-15
  • 打赏
  • 举报
回复


function DeleteQuestions()
{
var flag = false;
var inputs = document.getElementsByTagName("INPUT")
for (var i = 0; i < inputs.length; i++)
{//grwQuestions 为gridview的id,CheckBox2选中框id
if (inputs[i].type == "checkbox" && inputs[i].id.indexOf("grwQuestions") >= 0 && inputs[i].id.indexOf
("CheckBox2") >= 0 && inputs[i].checked)
{
flag = true;
}
}


if (!flag)
{

alert("****!"); //没选中
}
else
{
if (confirm('是否确定删除选中的**?'))
{
__doPostBack("后台删除事件", "");
}
}
}

慢慢积累 2009-12-15
  • 打赏
  • 举报
回复
真是很感激大家的回答。。。
大家说的这个我在新增的时候就是那样做的,在Page_Load里面加载了
if(!Page.IsPostBack)
{
this.btn_add.Attributes.Add("onclick", "Redirect('0')");
//这里加载修改的话,这个id没有办法获得呀???
this.btn_upd.Attributes.Add("onclick", "Redirect('" + id + "')");
}
可是我修改的时候,Redirect('0')这个JS方法我是需要把GridView中修改行的ID传过去的,没有办法在Page_Load里面加载呀!这个应该怎样处理呀???

还有麻烦大家看看,我删除的时候需要弹出确认删除的提示,我是这样做的:
<asp:Button ID="btn_del" runat="server" Text="删除类型" onclick="btn_del_Click" OnClientClick="return confirm('确认要删除吗?')" />
这个框弹出来了,只是一点删除按钮他就出来了,因为我还需要判断有没有选中复选框,有没有选中要删除信息的验证,所有想把确定删除信息这个框弹在其他验证的后面。

我是小菜,希望大家别嫌烦哦!
非常感激大家的帮助,请帮帮我。。。谢谢。。。
慢慢积累 2009-12-15
  • 打赏
  • 举报
回复
非常感谢 Lovely_baby 和 liu2835993 的回答。
可是我的复选框是在GridView中的,
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="cbx_All" runat="server" Text="全选" AutoPostBack="True" oncheckedchanged="cbx_All_CheckedChanged" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="cbx_Items" runat="server" Text=" " />
</ItemTemplate>
</asp:TemplateField>
这样应该怎样来判断复选框的选中状态呢???如何在后台判断有选中的复选框时,提示"是否删除",
选择"是"后进行删除操作,"否"的话操作取消???
麻烦大家在帮我解答一下这个删除,解决了就结贴了。
非常感谢大家,谢谢。。。
Orders 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 silentwins 的回复:]
C# codeprotectedvoid btn_upd_Click(object sender, EventArgs e)
{
......//省略需要验证的相关操作this.btn_upd.Attributes.Add("onclick","Redirect('"+ id+"')");
}

这句应该放在Page_Load吧

你没点击这个按钮之前,这个this.btn_upd根本没有onclick的属性
你第一次点击只是赋予它这个属性
第二次点击才真正地出发JavaScript的Redirect方法,
当然,第二次同时再一次执行了赋予属性的代码……
[/Quote]up
wuyq11 2009-12-14
  • 打赏
  • 举报
回复
点击第一次才添加onclick事件
if(!IspostBack)
{
this.btn_upd.Attributes.Add("onclick", "Redirect('" + id + "')");
}或使用OnClientClick
子夜__ 2009-12-14
  • 打赏
  • 举报
回复
给btn注册JS
把this.btn_upd.Attributes.Add("onclick", "Redirect('" + id + "')");
放在Page_Load里
就像楼上说的那样
程序刚开始运行就赋予btn JS方法
silentwins 2009-12-14
  • 打赏
  • 举报
回复
protected void btn_upd_Click(object sender, EventArgs e) 
{
......//省略需要验证的相关操作
this.btn_upd.Attributes.Add("onclick", "Redirect('" + id + "')");
}


这句应该放在Page_Load吧

你没点击这个按钮之前,这个this.btn_upd根本没有onclick的属性
你第一次点击只是赋予它这个属性
第二次点击才真正地出发JavaScript的Redirect方法,
当然,第二次同时再一次执行了赋予属性的代码……

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧