`
water84222
  • 浏览: 375386 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

(ASP.NET)修改和删除DataGrid行——数据库访问

阅读更多
本程序涉及到数据库的添加,修改和删除操作。

 

懒得写了,把界面贴出来,照着界面画就可以了。本例数据库:sqlserver2000附带的pubs数据库,看一下连接字符串就很清楚了。如果要在本机器上运行,把uid和pwd改成你自己sql登陆用户名和密码。

 

创建一个web页面,命名为:add.aspx。

界面设计如图:

 

add.aspx代码:

<%@ page language="c#" codebehind="add.aspx.cs" autoeventwireup="false" inherits="teachshow.charpter7.accessdatabase.add" %>

<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >

<html>

<head>

<title>add</title>

<link href="../../style.css" type="text/css" rel="stylesheet">

<meta content="microsoft visual studio .net 7.1" name="generator">

<meta content="c#" name="code_language">

<meta content="javascript" name="vs_defaultclientscript">

<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetschema">

</head>

<body ms_positioning="gridlayout">

<form id="form1" method="post" runat="server">

<div align="center">

<center>

<table class="smallblack" height="318" cellspacing="0" cellpadding="0" width="429" border="0">

<tr>

<td class="title" valign="top" width="429" colspan="2" height="31">添加一个新的发行者</td>

</tr>

<tr>

<td valign="top" width="79" height="23">发行者id:</td>

<td valign="top" width="350" height="23"><asp:textbox id="textbox1" runat="server" height="18px" cssclass="smallred"></asp:textbox><font face="宋体">(以99打头,共4位数字)</font></td>

</tr>

<tr>

<td valign="top" width="79" height="23"><font face="宋体">姓名:</font></td>

<td valign="top" width="350" height="23"><asp:textbox id="textbox2" runat="server" height="18px" cssclass="smallred"></asp:textbox></td>

</tr>

<tr>

<td valign="top" width="79" height="23"><font face="宋体">城市:</font></td>

<td valign="top" width="350" height="23"><asp:textbox id="textbox3" runat="server" height="18px" cssclass="smallred"></asp:textbox></td>

</tr>

<tr>

<td valign="top" width="79" height="23"><font face="宋体">省份:</font></td>

<td valign="top" width="350" height="23"><asp:textbox id="textbox4" runat="server" height="18px" cssclass="smallred"></asp:textbox><font face="宋体">(2个字符)</font></td>

</tr>

<tr>

<td valign="top" width="79" height="24"><font face="宋体">国家:</font></td>

<td valign="top" width="350" height="24"><asp:textbox id="textbox5" runat="server" height="18px" cssclass="smallred"></asp:textbox></td>

</tr>

<tr>

<td valign="top" align="center" width="429" colspan="2" height="24"><asp:linkbutton id="linkbutton1" runat="server">提交到数据库</asp:linkbutton></td>

</tr>

<tr>

<td width="429" height="147" valign="top" colspan="2">

<asp:datagrid id="datagrid1" runat="server" height="120px" cssclass="general" width="428px">

<itemstyle width="50px"></itemstyle>

<columns>

<asp:editcommandcolumn buttontype="linkbutton" updatetext="更新" canceltext="取消" edittext="编辑">

<headerstyle width="60px"></headerstyle>

</asp:editcommandcolumn>

<asp:buttoncolumn text="删除" commandname="delete"></asp:buttoncolumn>

</columns>

</asp:datagrid></td>

</tr>

</table>

</center>

</div>

</form>

</body>

</html>

 

add.asp.cs代码:

using system;

using system.collections;

using system.componentmodel;

using system.data;

using system.data.sqlclient;

using system.drawing;

using system.web;

using system.web.sessionstate;

using system.web.ui;

using system.web.ui.webcontrols;

using system.web.ui.htmlcontrols;

 

namespace teachshow.charpter7.accessdatabase

{

/// <summary>

/// add 的摘要说明。

/// </summary>

public class add : system.web.ui.page

{

protected system.web.ui.webcontrols.textbox textbox1;

protected system.web.ui.webcontrols.textbox textbox2;

protected system.web.ui.webcontrols.textbox textbox3;

protected system.web.ui.webcontrols.textbox textbox4;

protected system.web.ui.webcontrols.linkbutton linkbutton1;

protected system.web.ui.webcontrols.datagrid datagrid1;

protected system.web.ui.webcontrols.textbox textbox5;

 

private void page_load(object sender, system.eventargs e)

{

// 在此处放置用户代码以初始化页面

if(!this.ispostback)

{

this.bindgrid();

}

}

 

#region web 窗体设计器生成的代码

override protected void oninit(eventargs e)

{

//

// codegen: 该调用是 asp.net web 窗体设计器所必需的。

//

initializecomponent();

base.oninit(e);

}

 

/// <summary>

/// 设计器支持所需的方法 - 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void initializecomponent()

{

this.linkbutton1.click += new system.eventhandler(this.linkbutton1_click);

this.datagrid1.disposed += new system.eventhandler(this.datagrid1_disposed);

this.datagrid1.cancelcommand += new system.web.ui.webcontrols.datagridcommandeventhandler(this.datagrid1_cancelcommand);

this.datagrid1.editcommand += new system.web.ui.webcontrols.datagridcommandeventhandler(this.datagrid1_editcommand);

this.datagrid1.updatecommand += new system.web.ui.webcontrols.datagridcommandeventhandler(this.datagrid1_updatecommand);

this.datagrid1.deletecommand += new system.web.ui.webcontrols.datagridcommandeventhandler(this.datagrid1_deletecommand);

this.datagrid1.selectedindexchanged += new system.eventhandler(this.datagrid1_selectedindexchanged);

this.load += new system.eventhandler(this.page_load);

 

}

#endregion

 

private void linkbutton1_click(object sender, system.eventargs e)

{

addpublisher();

}

 

/// <summary>

/// 添加

/// </summary>

private void addpublisher()

{

string sql="insert into publishers(pub_id,pub_name,city,state,country) values(@pubid,@pubname,@city,@state,@country)";

 

sqlconnection con=new sqlconnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");

sqlcommand cmd=new sqlcommand(sql,con);

 

cmd.parameters.add(new sqlparameter("@pubid",sqldbtype.char,4));

cmd.parameters["@pubid"].value=this.textbox1.text;

cmd.parameters.add(new sqlparameter("@pubname",sqldbtype.varchar ,40));

cmd.parameters["@pubname"].value=this.textbox2.text;

cmd.parameters.add(new sqlparameter("@city",sqldbtype.char,20));

cmd.parameters["@city"].value=this.textbox3.text;

cmd.parameters.add(new sqlparameter("@state",sqldbtype.char,2));

cmd.parameters["@state"].value=this.textbox4.text;

cmd.parameters.add(new sqlparameter("@country",sqldbtype.varchar ,30));

cmd.parameters["@country"].value=this.textbox5.text;

 

cmd.connection.open();

cmd.executenonquery();

cmd.connection.close();

 

this.textbox1.text="";

this.textbox2.text="";

this.textbox3.text="";

this.textbox4.text="";

this.textbox5.text="";

 

this.bindgrid();

}

 

private void bindgrid()

{

sqlconnection con=new sqlconnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");

sqldataadapter mysqlcom=new sqldataadapter("select * from publishers where pub_id like '99%'",con);

dataset myds=new dataset();

mysqlcom.fill(myds,"publishers");

this.datagrid1.datasource=myds.tables["publishers"].defaultview ;

this.datagrid1.databind();

}

 

/// <summary>

/// 点击编辑时触发事件

/// </summary>

/// <param name="source"></param>

/// <param name="e"></param>

private void datagrid1_editcommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

this.datagrid1.edititemindex=(int)e.item.itemindex;

this.bindgrid();

}

 

/// <summary>

/// 点击取消时触发该事件。

/// </summary>

/// <param name="source"></param>

/// <param name="e"></param>

private void datagrid1_cancelcommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

this.datagrid1.columns[0].headertext="已取消";

this.datagrid1.edititemindex=-1;

this.bindgrid();

}

 

private void datagrid1_selectedindexchanged(object sender, system.eventargs e)

{

 

}

 

/// <summary>

/// 点击更新时触发该事件。

/// </summary>

/// <param name="source"></param>

/// <param name="e"></param>

private void datagrid1_updatecommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

sqlconnection con=new sqlconnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");

sqlcommand selectcmd=con.createcommand();

selectcmd.commandtype=commandtype.text;

selectcmd.commandtext="select * from publishers where pub_id like '99%'";

 

sqldataadapter sqladatper=new sqldataadapter();

sqladatper.selectcommand=selectcmd;

dataset ds=new dataset();

con.open();

sqladatper.fill(ds,"publishers");

con.close();

 

sqlcommand updatecmd=con.createcommand();

updatecmd.commandtext="update publishers set pub_name=@pubname,city=@city,state=@state,country=@country where pub_id=@pub_id";

sqlparameter pubnamepar=new sqlparameter("@pubname",sqldbtype.varchar,40,"pub_name");

updatecmd.parameters.add(pubnamepar);

sqlparameter citypar=new sqlparameter("@city",sqldbtype.varchar,20,"city");

updatecmd.parameters.add(citypar);

sqlparameter statepar=new sqlparameter("@state",sqldbtype.char,2,"state");

updatecmd.parameters.add(statepar);

sqlparameter countrypar=new sqlparameter("@country",sqldbtype.varchar,30,"country");

updatecmd.parameters.add(countrypar);

sqlparameter pubidpar=new sqlparameter("@pub_id",sqldbtype.char,4,"pub_id");

pubidpar.sourceversion=datarowversion.original;

updatecmd.parameters.add(pubidpar);

 

sqladatper.updatecommand=updatecmd;

 

datatable table=ds.tables["publishers"];

table.primarykey=new datacolumn[]

{

table.columns["pub_id"]

};

datarow row=table.rows.find(((textbox)(e.item.cells[2].controls[0])).text);

row["pub_name"]=((textbox)(e.item.cells[3].controls[0])).text;

row["city"]=((textbox)(e.item.cells[4].controls[0])).text;

row["state"]=((textbox)(e.item.cells[5].controls[0])).text;

row["country"]=((textbox)(e.item.cells[6].controls[0])).text;

 

con.open();

sqladatper.update(table);

con.close();

 

this.datagrid1.edititemindex=-1;

this.bindgrid();

}

 

/// <summary>

/// 点击删除时触发该事件

/// </summary>

/// <param name="source"></param>

/// <param name="e"></param>

private void datagrid1_deletecommand(object source, system.web.ui.webcontrols.datagridcommandeventargs e)

{

sqlconnection con=new sqlconnection("server=accp-lzh;uid=sa;pwd=sasa;database=pubs");

sqlcommand selectcmd=con.createcommand();

selectcmd.commandtext="select * from publishers where pub_id like '99%'";

 

sqlcommand deletecmd=con.createcommand();

deletecmd.commandtext="delete from publishers where pub_id=@pub_id";

sqlparameter pubidpar=new sqlparameter("@pub_id",sqldbtype.char,4,"pub_id");

pubidpar.sourceversion=datarowversion.original;

deletecmd.parameters.add(pubidpar);

 

sqldataadapter sqladapter=new sqldataadapter();

sqladapter.selectcommand=selectcmd;

sqladapter.deletecommand=deletecmd;

 

dataset ds=new dataset();

con.open();

sqladapter.fill(ds,"publishers");

datatable table=new datatable();

table=ds.tables["publishers"];

table.primarykey=new datacolumn[]//定义主键,便于查找

{

table.columns["pub_id"]

};

datarow row=table.rows.find(e.item.cells[2].text);

row.delete();

sqladapter.update(table);

con.close();

 

this.datagrid1.edititemindex=-1;

this.bindgrid();

}

 

private void datagrid1_disposed(object sender, system.eventargs e)

{

 

}

}

}

 
分享到:
评论

相关推荐

    ASP.NET源码——silverlight访问数据库汇总.zip

    本压缩包“ASP.NET源码——silverlight访问数据库汇总.zip”包含了关于如何在ASP.NET项目中利用Silverlight进行数据库访问的相关示例和源代码。 1. 数据库访问基础:在ASP.NET应用中,通常使用ADO.NET作为基础数据...

    ASP.NET源码——适合初学者的datagrid的操作.zip

    在这个"ASP.NET源码——适合初学者的datagrid的操作.zip"压缩包中,主要包含了一个关于如何在ASP.NET中操作DataGrid控件的示例项目。DataGrid是ASP.NET早期版本中用于显示和操作表格数据的标准控件,对于初学者来说...

    数据库访问技术——ADO。NET2.0习题答案

    - **DataGrid控件改进**:在ASP.NET中,DataGrid控件的性能和功能得到了增强,支持更丰富的用户界面。 ### 3. 数据访问流程 1. 打开**Connection**:使用适当的连接字符串建立数据库连接。 2. 创建并执行**Command...

    ASP.NET源码——[聊天留言]梦想留言本SQL版.zip

    通过ASP.NET的DataGrid、Repeater等控件,可以将数据库中的留言数据显示在网页上,用户可以查看、回复或者删除这些留言。同时,使用ADO.NET库,开发者可以方便地执行SQL查询语句,实现数据的读取、写入和更新操作。 ...

    ASP.NET源码——[电子商务]ASP.NET车站售票系统的设计与实现.zip

    1. **用户身份验证和授权**:ASP.NET提供内置的身份验证和授权机制,如Forms Authentication,可以实现用户的登录验证,并控制不同角色用户的访问权限,确保系统的安全。 2. **控件与数据绑定**:ASP.NET的服务器...

    ASP.NET源码——[电子商务]在线直销商城.zip

    【ASP.NET 源码详解——构建电子商务在线直销商城】 ASP.NET 是微软公司推出的一种用于构建Web应用程序的框架,它提供了丰富的工具集、强大的性能以及易于使用的编程模型,是开发电子商务平台的理想选择。本源码包...

    ASP.NET毕业设计——ASP.NET学生成绩管理系统(论文+系统).zip

    4. **身份验证与授权**:`Login.aspx`页面可能是用户登录的地方,ASP.NET提供了内置的身份验证和授权机制,如Forms Authentication,可以确保只有经过验证的用户才能访问特定的资源。 5. **页面间通信**:`AdminStu...

    ASP.NET源码——安德士企业网站.zip

    【ASP.NET源码——安德士企业网站.zip】是一个包含ASP.NET源代码的企业级网站项目,主要用于展示如何使用ASP.NET技术构建一个企业级网站。这个压缩包中的【企业政府】安德士企业网站 v1.0_anders 文件代表了该网站的...

    ASP.NET源码——[企业]智能Office办公系统源码.zip

    3. **数据访问层**:ASP.NET提供了ADO.NET、Entity Framework等数据访问技术,用于与数据库交互。在这个系统中,可能使用这些工具进行数据的增删改查,如员工信息、文档内容的存储和检索。 4. **身份验证与授权**:...

    ASP.NET 入门经典 pdf

    **第一章 微软.NET战略和ASP.NET简介** 1. **微软.NET的历史** - 微软.NET平台的诞生标志着软件开发领域的一个重大转折点,它为跨平台、跨语言的应用程序提供了支持。 2. **ASP.NET历史** - ASP.NET作为.NET框架...

    asp.NET参考手册(TXT手机版)

    ### ASP.NET参考手册知识点概述 #### 一、ASP与ASP.NET的基本概念 1. **ASP (Active Server Pages):** - ASP是一种服务器端脚本环境,可以在网页上嵌入脚本语言(如VBScript或JScript),使得网页具有动态交互...

    ASP.NET源码——站长中国通用产品企业网站.zip

    ASP.NET提供了多种数据绑定机制,如DataGrid、Repeater等,可以方便地与数据库交互,展示和更新数据。 4. **MVC模式**:虽然这个项目可能是基于Web Forms,但ASP.NET也支持Model-View-Controller(MVC)架构,这是...

    ASP.NET源码——[聊天留言]OnlineDiary在线日记本源码_onlinediary.zip

    在线日记应用可能涉及到数据存储和检索,因此源码中可能会使用ASP.NET的数据绑定技术,如DataGrid或Repeater控件来显示数据库中的日记条目。数据绑定允许动态地将数据源(如SQL Server数据库)与UI控件关联起来。 ...

    ASP.NET源码——[整站程序]中国IT联盟整站程序 v2.0_newchinaitbbs_new_68.zip

    4. **数据绑定**:ASP.NET支持多种数据绑定机制,如DataGrid、Repeater等控件可以直接绑定到数据库或其他数据源,实现数据的动态展示和操作。 5. **配置管理**:ASP.NET的配置文件(web.config)允许开发者轻松配置...

    Asp.net简明教程

    在 ASP.NET 中,尽管两者都能通过 OLE DB 连接,但推荐使用 SQL Server 的专有连接组件——SqlClient,因为它提供了更好的性能和安全性。 对于 ACCESS 数据库的连接,我们需要使用 OleDbConnection 类。例如: ```...

    asp.net程序设计基础

    7. **Web Forms和MVC模式**:ASP.NET提供了两种主要的开发模式——Web Forms和MVC。Web Forms基于控件模型,而MVC(Model-View-Controller)则提供更灵活的架构,强调分离关注点。 8. **部署和调试**:学会如何配置...

    ASP.NET 2.0快速入门(3)

    10. **安全性和身份验证**:ASP.NET 2.0提供了一系列的安全特性,如身份验证(Forms Authentication)、授权(Role-based Authorization)和状态管理(Session State),确保应用程序的数据安全和用户访问控制。...

    十天学会ASP.NET

    `DataGrid` 控件是ASP.NET中用于显示和编辑表格数据的强大工具。它支持多种数据源,并提供了排序、分页等功能。 1. **绑定数据源**:将数据源绑定到 `DataGrid` 控件上。 2. **自定义列**:根据需求自定义显示的列...

Global site tag (gtag.js) - Google Analytics