欢迎光临
我们一直在努力

dataGrid 中添加数据-ASP教程,数据库相关

建站超值云服务器,限时71元/月

文件代码:

test.aspx

===========================>

<%@ page language="c#" debug="true"%>

<%@import namespace="system.data"%>

<%@ import namespace="system.data.sqlclient" %>

<script language="c#" runat="server">

const string datatablename="employees";

sqlconnection conn;

sqldataadapter adapter;

void page_load(object src, eventargs e)

{

conn=new sqlconnection("server=(local);database=pubs;uid=sa;pwd=");

adapter=new sqldataadapter("select * from employees",conn);

if(!page.ispostback){

binddata();

}

}

//绑定数据

void binddata(){

//先从session中获取datatable

datatable table=(datatable)session[datatablename];

//若session中的datatable不存在,则从数据库获取数据

if(table==null){

table=new datatable();

adapter.fill(table);

//将datatable保存到session中

savetabletosession(table);

table.columns["id"].autoincrement=true;

}

grid.datasource=table;

grid.databind();

}

void changepage(object src,datagridpagechangedeventargs e){

grid.currentpageindex=e.newpageindex;

binddata();

}

void updatedatatable(object src,eventargs e){

try{

datatable table=gettablefromsession();

string name;

byte age;

string address;

checkbox ckdel;

for(int i=0;i<grid.items.count;i++){

datagriditem dgitem=grid.items[i];

int empid=(int)grid.datakeys[dgitem.itemindex];

ckdel=dgitem.findcontrol("delckb") as checkbox;

name=((textbox)dgitem.cells[0].controls[1]).text;

age=byte.parse(((textbox)dgitem.cells[1].controls[1]).text);

address=((textbox)dgitem.cells[2].controls[1]).text;

updateemployee(table,empid,name,age,address,ckdel.checked);

}

savetabletosession(table);

cancelbtn.enabled=true;

int rowcount=0;

foreach(datarow row in table.rows){

if(row.rowstate!=datarowstate.deleted)

rowcount++;

}

if(math.ceiling(rowcount/5.0)==grid.currentpageindex&&grid.currentpageindex>0)

grid.currentpageindex-=1;

binddata();

msglbl.text="更新数据表成功!";

}

catch(exception ex){

msglbl.text="更新数据表失败,出现意外错误:"+ex.message;

}

}

void updateemployee(datatable table,int id,string name,byte age,string address,bool isdelete){

for(int i=0;i<table.rows.count;i++){

datarow row=table.rows[i];

//如果选中了删除复选框,就直接就该行数据删除,不用再更新,否则更新该行数据

if(row!=null&&row.rowstate!=datarowstate.deleted){

if((int)row["id"]==id){

if(!isdelete){

row["name"]=name;

row["age"]=age;

row["address"]=address;

}

else

row.delete();

}

}

}

msglbl.text="更新数据表成功!";

}

void updatedatabase(object src,eventargs e){

try{

datatable table=gettablefromsession();

sqlcommandbuilder cmdbd=new sqlcommandbuilder(adapter);

adapter.update(table);

msglbl.text="更新数据源成功!";

cancelbtn.enabled=false;

}

catch(exception ex){

msglbl.text="更新数据源失败,出现意外错误:"+ex.message;

}

binddata();

}

void cancelupdate(object src,eventargs e){

datatable table=gettablefromsession();

table.rejectchanges();

grid.currentpageindex=0;

binddata();

cancelbtn.enabled=false;

}

void addnewemployee(object src,datagridcommandeventargs e){

if(e.commandname=="add"){

try{

datatable table=gettablefromsession();

string name=((textbox)e.item.findcontrol("newname")).text;

byte age=byte.parse(((textbox)e.item.findcontrol("newage")).text);

string address=((textbox)e.item.findcontrol("newaddress")).text;

datarow row=table.newrow();

row["name"]=name;

row["age"]=age;

row["address"]=address;

table.rows.add(row);

savetabletosession(table);

//重新绑定数据

binddata();

msglbl.text="添加新记录成功!";

cancelbtn.enabled=true;

}

catch(exception ex){

msglbl.text="未能添加新记录,出现意外错误:"+ex.message;

}

}

}

//将datatable保存到session中

void savetabletosession(datatable table){

session[datatablename]=table;

}

//从session中获取datatable

datatable gettablefromsession(){

datatable table=(datatable)session[datatablename];

if(table!=null){

return table;

}

else{

msglbl.text="未能从session中获取数据,可能session已超时,请刷新或重新打开当前页面!";

return null;

}

}

</script>

<html>

<head>

<title> webdiyer制造:)</title>

<meta name="generator" content="editplus">

<meta name="author" content="webdiyer(http://www.webdiyer.com)">

</head>

<body>

<form runat="server">

<asp:datagrid runat="server" id="grid" autogeneratecolumns=false datakeyfield="id" showfooter=true allowpaging=true pagesize=5 onpageindexchanged="changepage" pagerstyle-mode="numericpages" onitemcommand="addnewemployee">

<columns>

<asp:templatecolumn headertext="姓名">

<itemtemplate>

<asp:textbox runat="server" id="name" text=<%#databinder.eval(container.dataitem,"name")%>/>

</itemtemplate>

<footertemplate>

<asp:textbox runat="server" id="newname"/>

</footertemplate>

</asp:templatecolumn>

<asp:templatecolumn headertext="年龄">

<itemtemplate>

<asp:textbox runat="server" id="age" text=<%#databinder.eval(container.dataitem,"age")%>/>

</itemtemplate>

<footertemplate>

<asp:textbox runat="server" id="newage"/>

</footertemplate>

</asp:templatecolumn>

<asp:templatecolumn headertext="住址">

<itemtemplate>

<asp:textbox runat="server" id="address" text=<%#databinder.eval(container.dataitem,"address")%>/>

</itemtemplate>

<footertemplate>

<asp:textbox runat="server" id="newaddress"/>

</footertemplate>

</asp:templatecolumn>

<asp:templatecolumn headertext="删除">

<itemtemplate>

<asp:checkbox runat="server" id="delckb"/>

</itemtemplate>

<footertemplate>

<asp:button runat="server" text="添加" commandname="add"/>

</footertemplate>

</asp:templatecolumn>

</columns>

</asp:datagrid>

<asp:label runat="server" enableviewstate="false" id="msglbl" forecolor="red"/>

<div>

<asp:button runat="server" id="updatebtn" text="更新数据表" onclick="updatedatatable"/>

<asp:button runat="server" id="cancelbtn" text="取消对数据表的更新" enabled=false onclick="cancelupdate"/>

<asp:button runat="server" id="updatedbtbn" text="更新数据源" onclick="updatedatabase"/>

</div>

<div>

说明:datagrid中的数据类型都没有进行验证,如果输入错误的数据类型或空值可能会出错,实际应用中应该对用户输入的数据进行验证!

</div>

</form>

</body>

</html>

数据库中employees表结构:

create table employees (

[id] [int] identity (1, 1) not null ,

[name] [nvarchar] (10) collate chinese_prc_ci_as not null ,

[age] [tinyint] not null ,

[address] [nvarchar] (50) collate chinese_prc_ci_as not null

) on [primary]

go

alter table employees add

constraint [pk_employees] primary key clustered

(

[id]

) on [primary]

go

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » dataGrid 中添加数据-ASP教程,数据库相关
分享到: 更多 (0)