`
yanhuanwang
  • 浏览: 55889 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

阅读更多
原文地址: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()方法。

webabcd 2007-04-16 08:32 发表评论
分享到:
评论

相关推荐

    GridView 实现插入功能(代码)

    当用户想要插入新数据时,GridView可以通过启用Inserting事件和Edit模式来实现这一功能。 1. **配置GridView** - 首先,在设计视图中拖放GridView控件到页面上,并设置其ID。 - 接着,通过DataSources属性将...

    直接在gridview的FOOTER插入数据

    ### 直接在GridView的Footer插入数据:详细解析与实现步骤 #### 1. 引言 在Web开发中,特别是在使用ASP.NET进行网站构建时,GridView控件因其强大的数据展示能力和灵活的自定义特性而备受青睐。然而,对于希望在...

    Excel在Gridview显示与插入数据库

    我们将深入探讨如何将Excel文件的数据加载到GridView,以及如何从GridView中提取数据并插入到数据库。 首先,我们需要理解Excel数据的读取。可以使用Microsoft Office Interop库来直接操作Excel文件,但这需要在...

    在ASP.NET 2.0中操作数据之五十一:从GridView的页脚插入新记录

    总之,通过设置`GridView`的`ShowFooter`属性,转换列类型为`TemplateField`并创建自定义的插入界面,结合`ObjectDataSource`的配置,可以在ASP.NET 2.0环境中实现从GridView页脚插入新记录的功能。这种实现方式既...

    GridView实现插入,使用EmptyDataTemplate和DetailsView

    GridView没有内置的插入功能,这是GridView最大的缺陷,而我们知道DetailsView有内置的插入功能,我们可以将DetailsView嵌入到GridView的空模板EmptyDataTemplate中实现插入!!!

    在ASP.NET 2.0中操作数据:从GridView的页脚插入新记录

    在ASP.NET 2.0中操作数据:从GridView的页脚插入新记录

    关于GridView中显示Image图片列的方法及示例

    在许多应用中,我们可能需要在GridView中显示图片,例如用户头像、产品图片等。本文将详细介绍如何在GridView中添加并显示Image列,并提供相关示例。 一、基本步骤 1. 数据源设置:首先,你需要有一个包含图片路径...

    GridView内嵌套使用GridView

    在ASP.NET开发中,GridView控件是用于展示数据的强大工具,尤其在呈现表格形式的数据时。在本项目中,我们探讨的主题是“GridView内嵌套使用GridView”,这通常是为了实现更复杂的数据显示,例如,当数据有层次关系...

    GridView中添加功能

    在插入操作中,我们需要配置DataSource的`InsertCommand`属性,指定SQL的INSERT语句,以及`InsertParameters`,映射到GridView中各列的值。 4. **处理用户输入**: - 用户输入的数据需要从GridView的行对象中获取...

    Gridview用法大总结配 实例(源码)说明

    2:在Gridview中添加新记录 3:在Gridview中实现编辑和更新操作 4:在Gridview中实现一次性更新所有记录 5:在Gridview中固定表头的实现 6:在Gridview中合并单元格的实现 7:在Gridview中将数据操作...

    ASP.NET 2.0/3.5中直接操作Gridview控件插入新记录

    Gridview 控件尤其强大,能轻松展示数据库数据,但有一个显著的不足,即它本身并不直接支持插入新记录的功能。在 FormView 和 DetailsView 中,这个功能是内建的,但 Gridview 需要开发者通过自定义方式来实现。 要...

    GridView和DetailsView的插入,更新与删除

    然而,GridView默认不支持插入新记录,我们需要通过添加InsertItem模板来实现这一功能。 接下来,我们来看DetailsView控件。DetailsView通常用于显示单条记录,提供更精细的数据编辑界面。它可以显示每个字段的标签...

    GridView行中按钮的使用

    在GridView中,我们可以通过两种方式添加按钮:`ButtonField`和`TemplateField`。`ButtonField`是预定义的列类型,可以直接在列中创建按钮;而`TemplateField`允许自定义列内容,可以嵌入任何服务器控件,包括按钮...

    在GridView中使用MVC的例子

    4. **数据呈现**:在GridView中,我们可能需要进行排序、分页和筛选。在MVC中,这可以通过使用`PagedList.Mvc`库实现分页,通过`sortOrder`查询字符串参数处理排序,以及在控制器中添加筛选逻辑来实现。 5. **...

    c#中GridView新增一行,jQuery实现对数据增删改查

    在提供的文件中,"GridView新增一行.doc"和"GridView新增一行2.txt、3.txt"可能包含了关于如何在GridView中添加新行的详细步骤和代码示例,而"jQuery增加一行.txt"则可能涵盖使用jQuery进行数据操作的实践指导。...

    gridview动态添加空白行

    // 遍历GridView中的每一行,并获取相应的值 for (int i = 0; i < GridView1.Rows.Count; i++) { GridViewRow row = GridView1.Rows[i]; DataRow newRow = dt.NewRow(); // 设置每一行的值 newRow[0] = ...

    在 GridView 控件中使用 TemplateField

    ### 在 GridView 控件中使用 TemplateField #### 一、引言 `GridView` 控件是 ASP.NET 中一种非常强大的数据绑定控件,用于展示和管理数据。它支持各种内置功能,如分页、排序、编辑等。`GridView` 由一系列字段...

    GridView中日期时间显示格式问题

    "GridView中日期时间显示格式问题" 在 GridView 中,日期和时间的显示格式是一个常见的问题。今天,我们将讨论在 GridView 中如何正确地显示日期和时间的格式。 首先,我们需要了解GridView 中的数据绑定机制。在 ...

    GridView控件中DropDownList控件的绑定

    在GridView中嵌入DropDownList控件,可以为用户提供更丰富的交互体验,例如在编辑行时允许用户从下拉列表中选择值。本教程将深入讲解如何在GridView中绑定和使用DropDownList控件。 首先,我们需要理解GridView的...

    GridControl中嵌套GridView的使用

    4. **数据绑定**:子GridView的数据源通常与主GridView中的某一列关联,可以通过主键-外键关系实现。在`CustomRowCellEdit`事件中,根据主GridView当前行的数据,找到对应的子级数据并绑定到子GridView。 5. **事件...

Global site tag (gtag.js) - Google Analytics