您的位置:首页 > Web前端 > JavaScript

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#代码,就可以采用这样的方式了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐