扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
通过实践,想出了一种办法,主要步骤如下所示:
1) 在 GridView 的 EmptyDataView 中,放置一个普通的Html Table,以便在无数据时依旧显示表头,假设 ID 为 tbHeader,为下面用于新增功能的 Form 的各个控件提供说明;
2) 在 GridView 下面,放置一个普通的 HTML 表格,列数和 GridView保持一致,只有一行,内部放入用于新增功能的各个控件,假设 ID 为 tbForm
3) 在客户端中加入脚本,在页面显示到客户端时,利用 Javascript 将两个表格强行合并到一起,这样就会在 GridView 的最下面多出一行,其中有输入控件和“添加”链接(按钮),主要代码如下:
function MergeTable(source,dest)
{
var row;
var cell;var sourceTb = document.all(source);
var destTb = document.all(dest);
for (var i=0; i<sourceTb.rows.length; i++)
{
row = document.createElement("TR");
for (var j=0; j<sourceTb.rows(i).cells.length; j++)
{
cell = document.createElement("TD");
row.appendChild(cell);
//复制对象
for(k=0;k<sourceTb.rows(i).cells(j).all.length;k++)
cell.appendChild(sourceTb.rows(i).cells(j).all.item(k));
}
destTb.tBodies(0).appendChild(row);
}
for (var i=sourceTb.rows.length-1; i>=0; i--)
{
sourceTb.deleteRow(i)
}}
注意:要根据表格中是否具有数据来合并不同的表格,如果没有数据,要合并 EmptyDataView 中的 Html Table (即 tbHeader)与用于新增的表格(tbForm),如果有数据,则要合并 GridView 本身(可以用 GridView.ClientID来获取其客户端 ID)和用于新增加的表格(tbForm)。简单的做法是检查页面中有没有 tbHeader 以确定表格中是否包含数据,代码如下所示:
function ChangeTableLayout()
{
if(document.all('tbHeader') == null)
MergeTable('tbForm','<%=myGridView.ClientID %>');
else
MergeTable('tbForm','tbHeader');
}
4) 如果是 AJAX 环境,上述脚本有可能不被执行,可以调用 Sys.Application.load.add ( JavaScriptFunction) 来强制执行脚本,来合并表格,主要代码如下:
scriptmanager myScriptManager = ScriptManager.GetCurrent(Page);
if (myScriptManager.IsInPartialRenderingMode)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowFullTable1", "ChangeTableLayout();\n", true);
}
else
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowFullTable2", "Sys.Application.load.add (ChangeTableLayout);\n", true);
}
注:上述代码中的 ChangeTableLayout 为客户端脚本函数的名称,其中调用第3步骤中的代码,上述代码在 Atlas 中通过,在 ASP.NET AJAX Beta 上尚末测试。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者