All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
一个经典的PHP显示分页程序_[PHP教程]
C#网络应用编程基础练习题与答案(一)_.net资料_编程技术
WAP与PHP程序设计之基础篇_[PHP教程]
黑客隐藏PHP文件后门的技巧_php资料_编程技术
apache服务器中.htaccess的功能及写法_php资料_编程技术
asp.net页面导出为Excel文档_[Asp.Net教程]
不用组件实现Ajax效果_[AJAX教程]
组合.NET数据控件构建强大用户接口_.net资料_编程技术
在ASP.NET中防止注入攻击[翻译]_[Asp.Net教程]
在DataGrid控件中编辑数据项_[Asp.Net教程]
Reading number is top 10 pictures
身材野火台灣美女1
The real super beauty6
Plump breasts1
自己约的炮,含泪也要打完
ashlynn brooke
天安门景物系列(一)
采访美女孙菲菲
Average female college students3
The real super beauty14
BingBingFan apple dew point photo gallery1
Download software ranking
matrix2
Unix video tutorial15
尖东毒玫瑰B
Ashlynn Video1
好色的外科大夫
C++教程第四版
仙剑奇侠传98硬盘WINXP版
Such love down(擒爱记)
The cock of the Grosvenor LTD handsome
Tram sex maniac 2 (H) rar bag2
delv published in(发表于) 2014/1/23 3:14:12 Edit(编辑)
在,GridView,中增加记录的方法_[Asp.Net教程]

在,GridView,中增加记录的方法_[Asp.Net教程]

在 GridView 中增加记录的方法_[Asp.Net教程]


在 ASP.NET 2.0 中,GridView 支持修改/删除记录,但却不支持新增记录的功能(个人感觉是 GridVew 的一大缺憾,估计在下一版本中会加入此功能),大多数人建议用 FormView 来完成增加记录的功能,但是 FormView 和 GridView 不是同一个表格,所以无法在同一个页面的同一个表格中显示。如果故意将 FormView 或自己的一堆于用新增功能的控件使用普通的表格组装起来,那么会碰到一个很麻烦的问题,即两个表格的列宽如何协调一致,大多数情况下,大家在做表格的时候,表格中各列的宽度都是自动调整的,所以强行指定宽度在很多情况下并不适用。


通过实践,想出了一种办法,主要步骤如下所示:


1) 在 GridView 的 EmptyDataView 中,放置一个普通的Html Table,以便在GridView绑定的数据源中无数据时依旧显示表头(如果数据源为返回的数据行数为0,GridView默认是不显示表头的),假设 ID 为 tbHeader,它的作用是下面用于新增功能的 tbForm 的各列控件提供说明(充当表头);


2)在 GridView 下面,放置一个普通的 HTML 表格,其列数和 GridView 中定义的列数保持一致,但行数只有一行,然后在此表格的各列中放入用于新增功能的各个控件(如 TextBox等),假设此表格的 ID 为 tbForm


3)在页面中加入一段客户端脚本,以便使页面展示到客户端时,利用 Javascript 将两个表格强行合并到一起,这样就可以将只有一行的 tbForm 合并到 GridView中,因此 GridView 的最下面多出一行,其中有 tbForm 表格中定义的输入控件和“添加”链接(按钮),主要代码(JavaScript)如下:



function MergeTable(source,dest)
{
var row;
var cell;
var sourceTb = document.all(source);
var destTb = document.all(dest);
for (var i=0; i {
row = document.createElement("TR");
for (var j=0; j {
cell = document.createElement("TD");
row.appendChild(cell);
//复制对象
for(k=0;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)
}
}



function ChangeTableLayout()
{
if(document.all('tbHeader') == null)
MergeTable('tbForm','<%=myGridView.ClientID %>');
else
MergeTable('tbForm','tbHeader');
}


ChangeTableLayout();


如果 GridView 绑定时没有数据,将不显示其中定义的各列,而只显示 EmptyDataView 中的 tbHeader,这时要合并 tbHeader 和 tbForm。如果 GridView 绑定时包含数据,则不会显示 EmptyDataView(当然也不会显示其中的 tbHeader),但这时会显示 GridView 中定义的各个列,因此只需将 GridView 本身和 tbForm 合并即可。 GridView 的客户端ID可以用GridView.ClientID来获取。


在服务器端很容易知道 GridView 绑定后是否包含数据,但对于客户端来说,不容易检查,一个简单的作法就是检查页面中有没有 tbHeader 对象(如果有,则说明表格没有数据,如果无此对象,表示 GridView 中包含数据... 好啰嗦)


4)如果是 AJAX 环境,上述脚本有可能不被执行,可以调用 Sys.Application.load.add ( JavaScriptFunction) 来强制执行脚本,来合并表格,主要代码如下(C#):



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 上尚末测试。


另:为了更能说明上文代码的效果,我抓了一个截图,图中包括表头在内的前三行就是 GridView,最下面一行其实来自于另一个表格,在客户端强制合并后,显示效果就是这样,看起来象是一个表格。



感谢大家的意见,我对原文中的表述不明确的地方进行了更改。


来源:moslem的blog







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.