手机版

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

时间:2021-10-27 来源:互联网 编辑:宝哥软件园 浏览:

1.自ASP.NET 2.0以来,引入了许多新的强大的视图控件,如Gridview、FormView和DetailsView。通过XML和数据源控件的简单结合,在很多情况下,只需要简单的配置就可以开发出功能强大的应用程序。遗憾的是,Gridview控件不像在FormView和DetailsView控件中那样支持直接插入新记录。图1显示了使用控件显示数据库数据的典型情况。

图1使用Gridview控件在VS2005示例数据库的Address表中显示数据。熟悉GridView控件的朋友都知道,除了默认支持Insert操作之外,图1中的所有内容都是完整的。现在我用的是ASP.NET 3.5,结果还是一样,但是还是没有对插入操作的直接配置支持。二、解决方案事实上,有一些答案,这需要进一步了解Gridview控件。我们知道Gridview为开发人员定制编程提供了大量的模板支持。根据插入操作的一般实现界面,我们可以利用Gridview中页脚的模板功能,在Gridview控件的最后一行提供一个空行,供用户输入要输入的记录,从而间接实现Gridview控件对插入操作的支持。示例演示(1)创建示例网站,建立数据库关联,启动Visual Studio 2005/2008,选择“ASP。NET网站”模板创建一个新的示例网站GridViewExt。在默认页面Default.aspx中,拖动一个GridView控件。然后,单击GridView控件右上角的intellisense提示按钮,为此控件配置SqlDataSource1类型的数据源控件。此外,在简单的向导配置之后,数据源控件SqlDataSource1与示例数据库department.mdf相关联,并进一步与department.mdf表相关联。【提示】为了简化起见,示例数据库Depart.mdf只包含一个表DepartInfo,其结构也非常简单(其中字段DepartID是主键),如下图2所示:

最后生成的数据源控件SqlDataSource1配置参数(经一定修改)如下所示:asp3360 SQL数据源ID=' SQL data source 1 ' runat='[URL=JavaScript :]服务器[/url]'连接字符串=' % $ connectionstrings : departtconnectionstring % ' SELECT命令=' SELECT部门id,DepartName FROM departin fo ' Delete命令=' Delete FROM departin fo其中[电子邮件保护]'插入c删除参数asp3360参数名称=' int 32 '/删除参数插入参数asp3360名称=' departin id '类型=' int 32 '/asp:参数名称=' departin Name '类型二)修改页面Default.aspx布局我们的打算是,在让用户进行选择,当用户需要新增一记录时,便点击"添加"按钮,之后在控件的最后一行里,显示一个空白行,让用户按字段进行输入。当用户决定不输入新空白记录时,可以按'隐藏'按钮返回,该空白行消失。要实现以上目的,我们可以充分利用控件的页脚的模版功能进行自定义,因为表格中仅有一个可编辑列部门名称所以,我们只需要在此列的页脚模版中,定义如下(注意其中加粗部分):asp:Button按钮按钮ID='outAdd' runat='Server' Text='添加新记录n单击=' outAdd _ Click '/ASP : GridView ID=' GridView 1 ' runat=' server ' allow paging=' True ' allow worting=' True ' AutoGenerateColumns=' False ' CellPadding=' 4 ' show footer=' False ' DataSourceID=' sqldata source 1 ' for color=' # 333333 '网格线=' None ' datakeynames=' departtid '页脚样式. 背景色=' # 5d 7b 9d '字体-粗体=' True '前颜色='白色'/行样式.BackC0 ' numbertype=' 1 '负值=' False '有空格=' False '源值=' 7 '单位名称=' F ' w : ST=' on ' 7f 6 F3 '前颜色=' # 33333 '/Columns as : templatefield ShowHeader=' False ' edititemtaperture as 3360 link button ID=' link button 1 ' Runat=' server ' causesvization=' True '命令名称=' Update ' Text=' Update '/ASP : templatefield header Text=' departt name '排序表达式=' departt name ' edititemtaperture ASP : textbox ID=' departtnametextbox ' Runat=' server ' Text=' % ' Bind(' departt name ')% '/ASP 3360 textbox/edititemtaperture项目模板asp:标签ID='标签1 ' Runat='服务器' Text=' % # Bind(' departt name ')% '/ASP 3:标签/itemtaperture back color=' # 284775 ' fore color=' White ' horizontalign=' Center '/selecterowstyle . back color=' # e2d 6 ' Font-Bold=' True ' fore color=' # 333333 '/页眉样式.back color=' # 5d 7b 9d ' Font-Bold=' True ' fore color=' White '/editrow style .back color=' # 999999 '/AlternatingRowStyle .back color=' White ' fore color=' # 284775 '/ASP : GridView首先注意的是,在控件控件之前添加了一个ASP .网按钮“outAdd”,用于控件是否显示控件控件的模板内容。显然,在页面启动开始时这个模板是隐藏的。

因此,这个按钮的Click事件代码(位于文件Default.aspx.cx中)相当简单,如下:protected void outadd _ click(对象发送方,event args e){ GridView 1 . show footer=true;}接下来是Gridview的相关标记代码。可以看到,departname列的<中提供了DepartName框文本框供用户输入(因为本例中的这个字段只是一个简单的文本字段,对于其他类型的字段,需要创建相应的ASP.NET控件才能操作)。此外,请注意,我们在第一列的FooterTemplate中添加了add和Hide按钮,它们的事件代码如下: