showModelDialog 关闭后改变GridView某个单元格的值
.net Ajax 是一个非常不错的东西 方便的实现了B/S的异步数据传输,我们只需要在页开始加入
然后在需要用到异步传输的地方加上<UpdatePanel...></UpdatePanel> 经过简单设置,OK,一个ajax就完成了
但是当.net ajax有一个非常不好的地方,就是传输数据是整个页面的,数据量很大,网络不好的时候,就感觉很慢
我们的页面中有一个GridView,浏览这个页面时候,浏览器向服务器发送一个请求;
然后从服务器下载数据到本地;
接着我们按了某个按钮触发PostBack事件;
于是这个页面的GridView的数据又重新绑定,重新下载了一遍
但是很多时候我们只需要GridView中的部分内容改动就够了,所以整个GridView传输是没有必要的
这个时候我们可以用客户端的Javascript脚本实现对GridView中某个单元格的更改
比如我们的GridView中的ItemTemplate列里有一个按钮,一般我们都直接设置一下它的CommandName和CommandArgument进行服务器端操作的
这里我们可以把它做成客户端按钮Input,然后对它添加Onclick事件,showModelDialog出页面,让在服务器端执行的脚本在那个页面中执行
接着在关闭showModelDialog的时候,更改页面中GridView的某个对应的单元格的值
GridView解析到页面Html时候,它是一个XML格式的HTML文本,我们用Javascript脚本可以按照找节点(Node)的方式去实现找到某个单元格
下面是一个例子,这里我用A链接实现,如果是input也是一样的
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<div style="text-align:center">
<a href='editCampaign.aspx?campaignID=<%# Eval("campaignID") %>' class="CommonTextButton">
Edit</a>
<a href='javascript:void(0);' onclick="ShowTestDialog('runCampaign.aspx?CampaignID=<%# Eval("campaignID") %>&action=testRun','testRun',this);" class="CommonTextButton">
Test</a>
<a href='javascript:void(0);' onclick="ShowTestDialog('runCampaign.aspx?CampaignID=<%# Eval("campaignID") %>&action=releaseRun','releaseRun',this);" class="CommonTextButton">
Release</a>
<a href='javascript:void(0);' onclick="ShowTestDialog('runCampaign.aspx?CampaignID=<%# Eval("campaignID") %>&action=releaseDebugRun','releaseDebugRun',this);" class="CommonTextButton">
Debug Release</a>
</div>
</ItemTemplate>
</asp:TemplateField>
这里a链接的href设为 javascript:void(0); 这是让页面不会跳 如果我们用#如果页面比较长,就会跳到页首的
function ShowTestDialog(url,type,sender)
{
if(type == "testRun")
{
window.showModalDialog(url,'v','dialogWidth:500px;dialogHeight:100px;status:0;help:0');
sender.parentNode.parentNode.parentNode.childNodes[3].innerHTML=Date();
}
else if(type == "releaseRun")
{
var arr = window.showModalDialog(url,'w','dialogWidth:500px;dialogHeight:100px;status:0;help:0');
sender.parentNode.parentNode.parentNode.childNodes[4].innerHTML=Date();
}
else
{
window.showModalDialog(url,'x','dialogWidth:500px;dialogHeight:115px;status:0;help:0');
}
}
</script>
runCampaign.aspx中是事件处理的方法,页面的head里面需要简单设置下
<title>Run Campaign</title>
<base target="_self" />
</head>
posted on 2007-12-11 10:20 jerreychen 阅读(614) 评论(0) 编辑 收藏 举报