冷枫@CSDN

CSharp程序员大本营:积累平凡就是积累卓越!有了翅膀,你就有了天空!钝到极点的刀才最具杀伤力——因为它是锤子!

用户操作
[即时聊天] [发私信] [加为好友]
╄ 冷枫ID:JavaProgramers
484183次访问,排名98好友111人,关注者144
毕业于南阳理工学院计算机系软件工程专业,一直从事于软件开发工作,编程经验5年,一线程序员出身,开发实战经验丰富,精通Asp,Asp.NET, ERP(C#.NET),基于WEB(Asp.Net)的MIS等世道上的一般编程,精通SQL Server存储过程开发,曾为一家中型商务企业软件开发工程师,软件培训师。
JavaProgramers的文章
原创 287 篇
翻译 0 篇
转载 24 篇
评论 441 篇
╄ 冷枫的公告
╄ 冷枫 Asp.NET微软MVP
本Blog技术支持QQ群
[NET技术联盟]:1908832
[冷枫开发小组]:6307410
CSharp开放源码促进会
CSharp程序员大本营
最近评论
反对垄断:现在都在卖服务,软件都是白送的,微软降到100多就想笼络人心,做梦,微软迟早要完蛋
wyw_2002:“中国用户的计算机中60%都运行微软的操作系统“

请问这个60%是你统计的吗?
那40%是什么系统?

捡瓶子:废瓶子1角钱一个,一天捡100个,10元,跑去吃饭8元,买个XP,也要捡2年啊!
zenggang2008:反击盗版,在中国还有很长的路要走啊
大家都已经习惯"免费"了
路过:盗版不利于中国的软件业的发展,最终用户好像在盗版软件中得到了很多的好处,但是把中国的软件产业搞垮了。最终用户最后还是受害者。
文章分类
收藏
    相册
    IT英雄传奇
    大学留念集
    公司一角
    旅游系列二
    旅游系列三
    旅游系列一
    [╄ 冷枫]简介
    站长简介(RSS)
    经典网站收集
    .NET分页存储过程
    AJAX中国
    DOTNET控件网
    DotNet男孩社区
    Java共舞
    Tutorails[.NET]
    中国盟动力
    冷枫技术论坛
    开发者在线
    技术无极限(RSS)
    深圳赶集网
    源码网
    软件项目网
    网上邻居
    『 天道酬勤 』(RSS)
    『 孟子E章 』(RSS)
    『 孟子E章 』
    『 邹建专栏 』(RSS)
    『webdiyer 』
    微软官方
    ASP.NET 入门教程
    webcast视频教程
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 DataGrid 中添加数据收藏

    新一篇: 《ASP网页制作教程》笔记 | 旧一篇: DataGrid与SQL Server 2000数据绑定

    做了一个示例,用户更新的数据保存在Session中,点击“更新数据源”按钮后将Session中的数据更新到数据库中,可以在 http://www.webdiyer.com/demo/editdatagrid.aspx 看到演示效果:
    文件代码:
    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

    发表于 @ 2005年04月29日 23:11:00|评论(loading...)|编辑

    新一篇: 《ASP网页制作教程》笔记 | 旧一篇: DataGrid与SQL Server 2000数据绑定

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © ╄ 冷枫