[翻译]在GridView中插入新记录

c# gridview底部空行插入数据(Insert Row) C#2008源码(附mssql资料库2000及以上版本支持均支持) girdview本身不支持添加数据行功能,最简单最实用的功能(insertRow)。 使用方法:先将testdb文件还原到sql server数据库,打开Microsoft Visual Studio 2008,选择“文件”菜单→“打开”→“网站”,打开下载的文件夹。如果有建议或不明白的内容可以MSN:mansai@163.com与我联系。 立即下载
原文地址: http://www.dotnetbips.com/articles/c1e0ca90-5f5d-47aa-a739-492b562e810a.aspx
[原文源码下载]
[译者改后源码下载]


[翻译]在GridView中插入新记录


原文发布日期:2007.04.11
作者: Bipin Joshi
翻译: webabcd


GridView控件不允许你插入新记录。 本文中我将举例说明快速解决这个问题的方法。


介绍
几个月前我写了一篇文章,是讲述一个允许你在DataGrid里添加一条新记录的技巧。 GridView控件不允许你插入新记录。 这种情况下开发人员经常使用如下的技术增加新记录:

    ·他们在GridView的下面放置一个DetailsView控件。 用户可以通过DetailsView增加新记录,然后这条新记录就会显示在GridView里。
    ·他们通过一个超级链接使用户连接到另一个使用DetailsView增加新记录的web form。 一旦记录被添加后就会返回之前的页。

这些方法都有它们自己的缺点。 第一种方法占用了太多的屏幕空间,即使你增加的只是很少的记录。 所以它不是“主要用于编辑,偶尔增加记录”情况下的好的选择。 第二种选择需要额外创建一个web form,因为来回导航会需要向服务器发送更多的请求。 本文中我将举例说明快速解决这个问题的方法。


解决方案
GridView控件提供了一个被称作Empty Data Template的模板。 当GridView里没有数据显示的时候这个模板就会显示出来。 一般在没有数据显示的时候,这个模板会被用于显示一个给出示给用户的状态信息。 但是,你也可以为了别的目的而是用它。 本例中,你将使用它来给GridView增加新的记录。

新建一个Web Form示例
开始先在Visual Studio中新建一个web站点。 拖拽一个SQL数据源控件并配置它以从Northwind数据库的Customers表中选择出CustomerID、CompanyName、ContactName和Country列。


确保选择了“高级”按钮,并且选中“生成INSERT、UPDATE和DELETE语句”复选框。


现在,在你的web form里添加一个GridView控件,设置它的DataSourceID属性为SqlDataSource1。 启用这个GridView的编辑、删除和分页。 在GridView的智能标签中选择“编辑列…”选项。


在GridView中增加一个ButtonField,并设置它的CommandName属性为Insert。 用户通过单击插入按钮来增加新的记录。


现在右键单击GridView选择编辑模板 – Empty Data Template菜单选项。 拖拽DetailsView控件到Empty Data Template内,设置它的DataSourceID属性为SqlDataSource1。


同时设置它的DefaultMode属性为Insert。 当Empty Data Template显示的时候,DetailsView将会做好插入记录之前的准备。

现在来到web form的后置代码中写出GridView的RowCommand事件处理的代码,出示如下:
protected   void  GridView1_RowCommand( object  sender, GridViewCommandEventArgs e)
{
    
if (e.CommandName == "Insert")
    
{
        GridView1.DataSourceID 
= "";
        GridView1.DataBind();
    }

}

这里我们检查了GridViewCommandEventArgs的CommandName是否是“Insert”。 如果我们设置了GridView的DataSourceID属性为空,然后调用GridView的DataBind()方法的话, 那么GridView将不会有任何数据,从而显示Empty Data Template。

现在我们来处理DetailsView控件的ItemInserted事件。 当DetailsView成功的插入了一条新记录的时候,这个ItemInserted事件就会被触发。 在ItemInserted事件内写出如下代码:
protected   void  DetailsView1_ItemInserted( object  sender, DetailsViewInsertedEventArgs e)
{
    GridView1.DataSourceID 
= "SqlDataSource1";
    GridView1.DataBind();
}

这里我们再次设置了GridView的DataSourceID属性为SqlDataSource1,然后再次绑定它。 这样GridView就可以显示出最新插入的记录。





总结
GridView控件不允许你插入新的记录。 但是,通过它的Empty Data Template的帮助和DetailsView控件,你就可以有一个插入新记录的非常棒的方法。 用这种方法你可以节省屏幕空间,也不需要再用额外的页了。
下面的截图显示了我们的web form


作者: Bipin Joshi
Email: http://www.dotnetbips.com/contact.aspx
简介:Bipin Joshi是DotNetBips.com的管理员。他是 http://www.binaryintellect.com/的发起人,这个公司提供.NET framwork的培训和咨询服务。他在印度孟买为开发者提供培训。他也是微软的MVP(ASP.Net)和ASPInsiders的会员。


译者注:文中代码有个小问题,就是在指定数据源后会自动进行数据绑定,而不用再调用DataBind()方法。
直接在gridview的FOOTER插入数据 立即下载

相关推荐

gridview insert row

一个示范如何使用visual studio 2005在ASp.net的gridview控件中新增一条记录的源代码,老外写的,希望对你有用。

vs2008使用adodc,datagrid,datalist

注册三个控件 设置adodc数据库连接(也可以动态连接) 设置datalist等的数据源(也可以动态连接) 有错误信息: 该组件上的 GetValue 操作失败,生成错误代码 0x80020003。 不知道错在哪

werey的专栏 1517

克里金插值(Kriging)在MATLAB中的实现(克里金工具箱)

一,直接献上克里金插值MATLAB工具箱 链接:https://pan.baidu.com/s/1p0lt2G8KQ-els7Dyw5jPFg 提取码:wcss 下载后将该程序添加到MATLAB安装文件夹中的/toolbox下,然后在设置路径中添加该程序文件为默认路径即可调用程序。 资源中内附程序使用说明PDF。 二、本人实际操作代码如下所示,标注如下 load data1 %载入数据 %模型参...

qq_40937675的博客 6万+

C#`DataGridView`控件显示多余的空行

如果以上步骤都不能解决问题,可能需要更深入地调查你的代码和设置,或者考虑是否存在特定的环境或配置问题导致了这个异常行为。在某些情况下,可能需要查看相关的文档或社区论坛,看看是否有其他开发者遇到了类似的问题,并找到了解决方案。检查你的自定义绘制代码,确保没有错误地添加额外的行或空白区域。等),数据源中可能包含额外的空行或未初始化的记录。确保你的数据源没有额外的空行。的大小和位置设置正确,并且没有因为父容器的布局问题而导致显示异常。:检查你的代码,确保没有在运行时动态地添加额外的行到。

wddblog的博客 1707

一致性总线CMN600AE-ARM系列

主要介绍一致性总线CMN600AE,根据arm官网的spec来概述其模块。提示:以下是本篇文章正文内容,下面案例可供参考CMN600ae是基于Mesh拓扑结构,对外支持AMBA CHI/ACE-LITE等接口,内部改用路由结构转发数据,并提供硬件一致性和系统缓存,还支持多芯片互联。CMN600在T16FFC上可以做到2Ghz,另外AE版本增加了车轨芯片的安全功能,总线内部采用EDC检查,接口采用的奇校验。

tujiuguo3994的博客 6296

GD32F303调试小记(一)之USART(接收中断、接收空闲中断+DMA、发送DMA)

前言 之前写了GD32F103调试小记(二)之USART(接收中断、接收空闲中断+DMA、发送DMA)一文。这次我们来看看GD32F303的USART是如何配置的,结合这两篇文章,相信大家GD32的USART配置流程会十分熟悉。 DMA 能大大减轻CPU负荷的东西,建议场景合适的情况下,都去用DMA功能。 USART 一种串行通信协议, ...

欢喜6666的博客 3万+

VS2008使用dataGrid控件,点击表格可以删除字符。

在属性中把下列三个属性全部修改为FALSE.

dafenqie的博客 771

基于FPGA的 SelectIO IP核 的仿真验证-----( LVDS差分高速传输)

SelectIO IP核 的仿真验证

qq_43618170的博客 1万+

gridview和detailsview的完美结合运用实现增删改

原文发布时间为:2008-07-24 —— 来源于本人的百度文章 [由搬家工具导入]1、因Gridview中没有增加记录,所以应利用datalistview或formview来弥补。2、因为detailsview会默认显示第一条记录,如果不让显示,只要在当前Detailsview属性里,行为:DefaultMode设置为Insert,就可以解决了这个问题了。3、为了防止detailsview中修改...

weixin_30484247的博客 739

【BLE系列-第六篇】GATT解析:属性、特征、描述符的逻辑关系

本文系统介绍了BLE协议中的ATT和GATT机制。ATT以"属性"为基本数据单元,包含UUID、Handle、权限和Value四个要素。GATT则在ATT基础上构建了服务、特征和描述符的层次结构:服务(UUID:0x2800/0x2801)通过声明属性标识,特征声明(UUID:0x2803)指向特征值(UUID:0x2Axx或自定义),描述符(UUID:0x2900~0x290F)提供附加信息。GATT复用ATT发现机制,通过定义特定UUID语义实现服务发现和特征管理。这种设计使BLE设

qq_43399763的博客 1929

想使用dify实现docx文档的自动生成?试了一圈,感觉还是根据python-docx更靠谱

在软件开发过程中,需求文档、设计文档等材料的编写是每个开发者都绕不开的工作。最近笔者接到一个需要批量生成标准化需求文档的任务,尝试了目前热门的低代码工具Dify后,发现对于稍微复杂格式的文档生成需求(例如文本居中这么简单的需求),最终还是回归到基于python-docx库的解决方案。本文将分享两种技术路线的对比实践。

xiezhipu的博客 2547

在GridView中插入新记录的方法(结合DetailsView)

在GridView中插入新记录的方法(结合DetailsView) 注意: 今天在项目中发现,当用下面的方法实现新建功能的时候,不能让gridview允许排序,否则会出错:“数据源不允许排序”! 众所周知,gridview的功能在.netframework2.0版本里是如此的强大。编辑、删除功能结合ajax可以做到无刷新操作数据。但是最令人遗憾的一点就是Gridv

darkread的专栏 4879

LDRA Testbed(TBrun)软件单元测试_操作指南

通过前面的几篇文章,使用Testbed进行软件静态分析的内容已经基本讲解完毕。从这篇文章开始,将继续讲解如何使用TBrun进行软件单元测试、软件集成测试。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 7762

]在GridView中插入新记录

[翻译]在GridView中插入新记录原文发布日期:2007.04.11作者:Bipin Joshi翻译:webabcdGridView控件不允许你插入新记录。 本文中我将举例说明快速解决这个问题的方法。介绍几个月前我写了一篇文章,是讲述一个允许你在DataGrid里添加一条新记录的技巧。 GridView控件不允许你插入新记录。 这种情况下开发人员经常使用如下的技术增加新记录:    ·他们

sqlmlm的专栏 916

YOLOv11 | 一文带你深入理解ultralytics最新作品yolov11的创新 | 训练、推理、验证、导出 (附网络结构图)

ultralytics发布了最新的作品YOLOv11,这一次YOLOv11的变化相对于ultralytics公司的上一代作品YOLOv8变化还是很大的(YOLOv9、YOLOv10均不是ultralytics公司作品),其中改变的位置涉及到C2f变为C3K2,在SPPF后面加了一层类似于注意力机制的C2PSA,还有一个变化大家从yaml文件是看不出来的就是它的检测头内部替换了两个DWConv,在损失函数方面就没有变化了还是采用的CIoU作为边界框回归损失,下面带大家深入理解一下ultralytics最新作品

Snu77的博客 18万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Telerik GridView 控件的汉化

之前搜索这个控件的汉化时,都没有发现合适的汉化包,自己做了一个. 实现的思路就是基本都是telerik 官网的实现. 官网链接:http://docs.telerik.com/devtools/silverlight/common-localization 1.本地创建一个资源文件包GridViewResources (不能上传文件,直接把键值对,拷贝在这里了,中文是随手翻译的,...

ataeyrs97843的博客 464

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

[翻译]GridView中单击TextBox后使所在的行高亮

摘要:本文翻译自AzamSharp 的文章Highlighting Rows with TextBox OnFocus 地址是:http://gridviewguy.com/ArticleDetails.aspx?articleID=194。在保证原文意思的基础上有些地方用了自己的理解来翻译。   介绍:作者(原文中的”I”,下同)以前曾写过如何实现当鼠标经过GridView的一个行时使其变...

weixin_33979203的博客 172

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android gridview 广告,Android开发之使用GridView展示图片的方法

本文实例讲述了Android使用GridView展示图片的方法。分享给大家供大家参考,具体如下:今天说说GridView的使用。所谓GvidView翻译过来就是网格布局:是一个ViewGroup以网格显示它的子视图(view)元素,即二维的、可滚动的网格。网格元素通过ListAdapter自动插入到网格。这个GridView用处特别多,我这里是用来展示广告的。2*3的广告位置。废话少说先看个效果图...

weixin_39969953的博客 147

android gridview显示本地图片大小,Android开发之使用GridView展示图片的方法

本文实例讲述了Android使用GridView展示图片的方法。分享给大家供大家参考,具体如下:今天说说GridView的使用。所谓GvidView翻译过来就是网格布局:是一个ViewGroup以网格显示它的子视图(view)元素,即二维的、可滚动的网格。网格元素通过ListAdapter自动插入到网格。这个GridView用处特别多,我这里是用来展示广告的。2*3的广告位置。废话少说先看个效果图...

weixin_34222309的博客 557

[翻译]使用ASP.NET AJAX让GridView的数据行显示提示框(ToolTip)

原文地址:http://www.dotnetbips.com/articles/36f06160-5221-4d27-a177-320927f4b962.aspx[原文源码下载][译者改后源码下载] [翻译]使用ASP.NET AJAX让GridView的数据行显示提示框(ToolTip) 原文发布日期:2007.05.06作者:Bipin Joshi翻译:webabcd介绍AS...

146
上一篇: 乐在其中设计模式(C#) - 命令模式(Command Pattern)
下一篇: [翻译]ASP.NET AJAX之内部揭秘
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值