用 GridView 内建的编辑功能更新数据库

时间:2024-04-11 11:13:21

 (本帖在版工的旧 Blog 中,发表日期为 2007/09/04)

版工之前觉得 ASP.NET 2.0 GridView 内建的编辑功能 (新增、修改、删除),其界面很丑又不实用 (如下图 1),从 .NET 1.x (DataGrid) 后就没再用过了。但日前开发 ASP.NET 2.0 project,临时要用到这个功能,倒也费了版工一些时间摸索其用法;虽然很多书上都有介绍过该编辑功能了,版工仍将试成功的关键源代码贴出,以便日后参考。执行画面如下图 1, GridView 要透过 SqlDataSource 去 SQL Server 2005 做新增、修改、删除,新增动作的执行,是透过右上方的「新增出货明细」Button。

要透过 GridView 更新的数据表,其 Primary Key 为「PGID」、「sn」两个 column 所组成的「复合主键」,前者的类型为 nvarchar、后者的类型为 int;要开放给 user 更新的「净重(KG)」字段,其 column name 为「Weight」,其类型为 decimal。图中 GridView 里的「疋数」,是由一支 Stored Procedure 自动产生累加编号 (Identity),其值并不会存至数据库中。

用 GridView 内建的编辑功能更新数据库
图 1 GridView 内建的 record 编辑功能


用 GridView 内建的编辑功能更新数据库用 GridView 内建的编辑功能更新数据库Default.aspx 的源代码
用 GridView 内建的编辑功能更新数据库<asp:GridView ID="GridView1" runat="server" AllowPaging="False" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="PGID,sn" EmptyDataText="查无数据" DataSourceID="sdsGridView" CellPadding="3" ForeColor="#333333" GridLines="Vertical" width="310px">
用 GridView 内建的编辑功能更新数据库
用 GridView 内建的编辑功能更新数据库    
<Columns>
用 GridView 内建的编辑功能更新数据库        
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" UpdateText="存储" ItemStyle-HorizontalAlign="Center">
用 GridView 内建的编辑功能更新数据库            
<ItemStyle Width="70px" />
用 GridView 内建的编辑功能更新数据库        
</asp:CommandField>
用 GridView 内建的编辑功能更新数据库        
<asp:BoundField DataField="存储过程产生的自动累加编号字段名称" HeaderText="疋數" SortExpression="存储过程产生的自动累加编号字段名称" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Right" ReadOnly="true" />
用 GridView 内建的编辑功能更新数据库        
<asp:BoundField DataField="Weight" HeaderText="净重(KG)" SortExpression="Weight" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Right" />
用 GridView 内建的编辑功能更新数据库    
</Columns>
用 GridView 内建的编辑功能更新数据库
用 GridView 内建的编辑功能更新数据库    
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
用 GridView 内建的编辑功能更新数据库    
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
用 GridView 内建的编辑功能更新数据库    
<EditRowStyle BackColor="#999999" />
用 GridView 内建的编辑功能更新数据库    
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
用 GridView 内建的编辑功能更新数据库    
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
用 GridView 内建的编辑功能更新数据库    
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
用 GridView 内建的编辑功能更新数据库    
<AlternatingRowStyle BackColor="White" ForeColor="#333333" />
用 GridView 内建的编辑功能更新数据库
</asp:GridView>
用 GridView 内建的编辑功能更新数据库
用 GridView 内建的编辑功能更新数据库
用 GridView 内建的编辑功能更新数据库
<asp:SqlDataSource ID="sdsGridView" runat="server" ConflictDetection="CompareAllValues" 
用 GridView 内建的编辑功能更新数据库    InsertCommand
="INSERT INTO 数据表 (PGID,sn,Weight,insertdate,updatetime) VALUES(@PGID,@sn,@Weight,getdate(),getdate())"
 
用 GridView 内建的编辑功能更新数据库    OldValuesParameterFormatString
="original_{0}"
 
用 GridView 内建的编辑功能更新数据库    ConnectionString
="<%$ ConnectionStrings:数据表连结字符串 %>"
 
用 GridView 内建的编辑功能更新数据库    SelectCommand
="存储过程名称" SelectCommandType="StoredProcedure"
 
用 GridView 内建的编辑功能更新数据库    UpdateCommand
="UPDATE [数据表] SET [email protected] WHERE [PGID][email protected]_PGID AND [sn][email protected]_sn"
 
用 GridView 内建的编辑功能更新数据库    DeleteCommand
="DELETE FROM [数据表] WHERE [PGID][email protected]_PGID AND [sn][email protected]_sn"
 
用 GridView 内建的编辑功能更新数据库
>

用 GridView 内建的编辑功能更新数据库    
<SelectParameters>
用 GridView 内建的编辑功能更新数据库        
<asp:QueryStringParameter Name="PGID" QueryStringField="PGID" Type="String" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Direction="ReturnValue" Name="RETURN_VALUE" Type="Int32" />
用 GridView 内建的编辑功能更新数据库    
</SelectParameters>
用 GridView 内建的编辑功能更新数据库    
<InsertParameters>
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="PGID" Type="String" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="sn" Type="Int32" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="Weight" Type="Decimal" />
用 GridView 内建的编辑功能更新数据库    
</InsertParameters>
用 GridView 内建的编辑功能更新数据库    
<UpdateParameters>
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="Weight" Type="Decimal" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="original_PGID" Type="String" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="original_sn" Type="Int32" />
用 GridView 内建的编辑功能更新数据库    
</UpdateParameters>
用 GridView 内建的编辑功能更新数据库    
<DeleteParameters>
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="PGID" Type="String" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="sn" Type="Int32" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="original_PGID" Type="String" />
用 GridView 内建的编辑功能更新数据库        
<asp:Parameter Name="original_sn" Type="Int32" />
用 GridView 内建的编辑功能更新数据库    
</DeleteParameters>
用 GridView 内建的编辑功能更新数据库
</asp:SqlDataSource>

  

用 GridView 内建的编辑功能更新数据库用 GridView 内建的编辑功能更新数据库Default.aspx.cs 中,按下 GridView 右上方的「新增出货明细」Button 的源代码
用 GridView 内建的编辑功能更新数据库// GridView上方的「新增出货明细」
用 GridView 内建的编辑功能更新数据库
protected void btnNew_Click(object sender, EventArgs e)
用 GridView 内建的编辑功能更新数据库用 GridView 内建的编辑功能更新数据库
用 GridView 内建的编辑功能更新数据库
{
用 GridView 内建的编辑功能更新数据库    
string strGetMaxSnOfThisPGID = "SELECT isnull(MAX(sn),0)+1 FROM [数据表] WHERE PGID='" + Request.QueryString["PGID"+"'"
;
用 GridView 内建的编辑功能更新数据库    
int intMaxSnPlusOne =
 Access_Db.selectOnlyOneInt(strGetMaxSnOfThisPGID);
用 GridView 内建的编辑功能更新数据库
用 GridView 内建的编辑功能更新数据库    ((SqlDataSource)FormViewMaster.FindControl(
"sdsGridView")).InsertParameters["PGID"].DefaultValue = Request.QueryString["PGID"
];
用 GridView 内建的编辑功能更新数据库    ((SqlDataSource)FormViewMaster.FindControl(
"sdsGridView")).InsertParameters["sn"].DefaultValue =
 intMaxSnPlusOne.ToString();
用 GridView 内建的编辑功能更新数据库    ((SqlDataSource)FormViewMaster.FindControl(
"sdsGridView")).InsertParameters["Weight"].DefaultValue = ""
;
用 GridView 内建的编辑功能更新数据库    ((SqlDataSource)FormViewMaster.FindControl(
"sdsGridView"
)).Insert();

用 GridView 内建的编辑功能更新数据库    ((GridView)FormViewMaster.FindControl(
"GridView1")).EditIndex = ((GridView)FormViewMaster.FindControl("GridView1"
)).Rows.Count;
用 GridView 内建的编辑功能更新数据库}

  

转载于:https://www.cnblogs.com/WizardWu/archive/2008/07/23/1249947.html