javascript调用C#代码的问题(asp.net)
2008-11-15 10:16
615 查看
刚才解决了一个很棘手的问题,我在一个aspx页面中用一按钮弹出另一个窗体:
<input type="button" class="button" id="btnOpenAddWin" value="添加"
onclick="OpenWindow('../AddUpdatePages/StudyPlanInfo.aspx',500,300);"/>
其中OpenWindow是在js文件中写的函数:
//弹出固定大小固定位置的新窗口
function OpenWindow(url,w,h){
var left=Math.round((window.screen.availWidth-w)/2);
var top=Math.round((window.screen.availHeight-100-h)/2);
var MyWin=window.open(url, "", "height=400,
width=500,top="+top+",left="+left+", toolbar=no, menubar=no,
scrollbars=no, resizable=no, location=no, status=no");
}
然后我在弹出页添加数据,添加成功后,我想让它的父页面,显示刚才添加的数据.我用的是gridview显示数据.我想要的效果是,让刚添加的数据添加到
gridview最后一行(其实只要gridview重新绑定就可以),然后我要让父页的gridview翻页到最后一页,然后选中最后一项(就是刚才添
加的一项).
而要让gridview分页(我是自己写的分页).就得要用C#代码.而现在我在子页中是采用调用父页的javascript代码的方式.因此就涉及到父页的javascript代码要调用它的C#代码.
在子页添加完数据后,让父页完成所要的操作,并且关闭子页.我在子页完成按钮中这样写:
Response.Write("<script language='javascript'>" +
"window.opener.ShowAddResult();alert('添加成功');window.close();</script>");
然后父页的ShowAddResult()函数就必须要调用其后台的C#代码了.
在网上试了很多方法.本想用ajax实现的,本是有些麻烦,而且ajax提交过来处理,好像是要新开页面的,那样还是不能实现我所要的效果.
而
看到这个方法后,真是太高明了.其实很简单,我们只要把所要执行的代码放在一个按钮下.然后让javascript代码操作其点击一次,这不就是触发了后
台代码执行了吗?呵呵.......如果此按钮只用以执行此功能,可以让其不可见.(注意,如果此控件加上了runat="server"属性,不能用
visible="false"来设置其不可见,不然调用不到函数,因为此用此方法后,JS找不到存在的对象,只能用CSS设置
display:none)
应该这样写:
<script type="text/javascript" language="javascript">
//显示添加后的数据
function ShowAddResult(){
document.all("btnShowResult").click();
}
</script>
然后在btnShowResult按钮单击事件中写上让gridview分页,并选中最后一行的代码:
/// <summary>
/// 显示添加的数据并让设为选中状态
/// </summary>
public void BindAndShowAddResultToGridView()
{
BLL.StudyPlan studyPlan = new BLL.StudyPlan();
gvStudyPlan.DataSource = studyPlan.GetAllList();
gvStudyPlan.PageIndex = (gvStudyPlan.PageCount - 1);
gvStudyPlan.DataBind();
gvStudyPlan.Rows[gvStudyPlan.Rows.Count - 1].BackColor = System.Drawing.Color.Silver;
lblCurrentPage.Text = "第" + (gvStudyPlan.PageIndex + 1).ToString() + "页";
lblPageCount.Text = "共" + gvStudyPlan.PageCount.ToString() + "页";
}
哈哈..很简单,以后遇到想让javascript调用C#代码,就可以采用这样的方式了.
<input type="button" class="button" id="btnOpenAddWin" value="添加"
onclick="OpenWindow('../AddUpdatePages/StudyPlanInfo.aspx',500,300);"/>
其中OpenWindow是在js文件中写的函数:
//弹出固定大小固定位置的新窗口
function OpenWindow(url,w,h){
var left=Math.round((window.screen.availWidth-w)/2);
var top=Math.round((window.screen.availHeight-100-h)/2);
var MyWin=window.open(url, "", "height=400,
width=500,top="+top+",left="+left+", toolbar=no, menubar=no,
scrollbars=no, resizable=no, location=no, status=no");
}
然后我在弹出页添加数据,添加成功后,我想让它的父页面,显示刚才添加的数据.我用的是gridview显示数据.我想要的效果是,让刚添加的数据添加到
gridview最后一行(其实只要gridview重新绑定就可以),然后我要让父页的gridview翻页到最后一页,然后选中最后一项(就是刚才添
加的一项).
而要让gridview分页(我是自己写的分页).就得要用C#代码.而现在我在子页中是采用调用父页的javascript代码的方式.因此就涉及到父页的javascript代码要调用它的C#代码.
在子页添加完数据后,让父页完成所要的操作,并且关闭子页.我在子页完成按钮中这样写:
Response.Write("<script language='javascript'>" +
"window.opener.ShowAddResult();alert('添加成功');window.close();</script>");
然后父页的ShowAddResult()函数就必须要调用其后台的C#代码了.
在网上试了很多方法.本想用ajax实现的,本是有些麻烦,而且ajax提交过来处理,好像是要新开页面的,那样还是不能实现我所要的效果.
而
看到这个方法后,真是太高明了.其实很简单,我们只要把所要执行的代码放在一个按钮下.然后让javascript代码操作其点击一次,这不就是触发了后
台代码执行了吗?呵呵.......如果此按钮只用以执行此功能,可以让其不可见.(注意,如果此控件加上了runat="server"属性,不能用
visible="false"来设置其不可见,不然调用不到函数,因为此用此方法后,JS找不到存在的对象,只能用CSS设置
display:none)
应该这样写:
<script type="text/javascript" language="javascript">
//显示添加后的数据
function ShowAddResult(){
document.all("btnShowResult").click();
}
</script>
然后在btnShowResult按钮单击事件中写上让gridview分页,并选中最后一行的代码:
/// <summary>
/// 显示添加的数据并让设为选中状态
/// </summary>
public void BindAndShowAddResultToGridView()
{
BLL.StudyPlan studyPlan = new BLL.StudyPlan();
gvStudyPlan.DataSource = studyPlan.GetAllList();
gvStudyPlan.PageIndex = (gvStudyPlan.PageCount - 1);
gvStudyPlan.DataBind();
gvStudyPlan.Rows[gvStudyPlan.Rows.Count - 1].BackColor = System.Drawing.Color.Silver;
lblCurrentPage.Text = "第" + (gvStudyPlan.PageIndex + 1).ToString() + "页";
lblPageCount.Text = "共" + gvStudyPlan.PageCount.ToString() + "页";
}
哈哈..很简单,以后遇到想让javascript调用C#代码,就可以采用这样的方式了.
相关文章推荐
- Javascript 直接调用服务器C#代码 ASP.NET Ajax实例
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- ...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)
- javascript如何调用C#后台代码中的过程和ASP.NET调用
- (转)javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- (转)javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案
- javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案
- javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案
- ASP.NET中前台javascript与后台c#函数相互调用问题(1)http://hi.baidu.com/xuexiang516168/blog/item/90f2bc4bc316372908f7eff4.html
- javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案
- Javascript 直接调用服务器C#代码 ASP.NET Ajax实例
- javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案
- ASP.NET Ajax实例—Javascript直接调用服务器C#代码
- ASP.NET前台javascript与c#后台代码调用
- javascript与cs代码互相调用 asp.net中前台javascript与后台C#交互 这里主要包括了javascipt与后台CS代码四种方法互调(其中包括函数与变量的访问)
- ...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)
- javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案