简单介绍一下asp.net中DataGrid的使用(视频教程)

 (说明:我的教程做的是exe 的文件,不是任何病毒,希望大家放心下载,我以人格保证)
主要是其他的工具做的比较大,没有那么多空间,望大家见谅!
 
     视频下载
 
     工程下载

    简单介绍一下asp.net中DataGrid的使用,包括增加 删除 修改 显示
     开发环境
  (Windows2003 Server + Visual Studio 2005 + Sql Server 2005)
     适合初学者使用

              (在.net2.0中数据显示控件都使用GridView,但是有部分人还在使用.net1.1,
   所以我还是先说说DataGrid控件的使用,其实用法都差不多的)

大家主要看我的操作,我会做详细的注释~!

1.新建网站
2.首先建立数据库,建表
   create database testdb
好了,数据库建好了,表我们在程序中建立

然后
表建好来

 

   create table test
(
  id int identity(1,1) primary key,
  title varchar(50),
  email varchar(50),
  context varchar(50)
  
)
3.先插入数据

然后我们来作插入操作
主要看我的操作

顺便作一下验证
好了

现在双击新增进行新增

成功了
下来我们 作显示


4.显示数据

我们来设置主键
以及允许分页

分页没有反应
我要再这个事件中写代码
看^&^&
PageIndexChanged事件
分页好来吧


5.数据更新

我现在做数据的更新
更新的时候先要响应
EditCommand事件

然后更新和取消的时候分别响应以下两个事件
UpdateCommand
CancelCommand
我们先不 验证

 

6.数据删除

我们先做删除


//我们应该做一个提示的
提醒是否删除
我们来做

就是把这个删除列转成模板列
然后加一个js脚本就可以了
脚本错了
我找一下

 

它再删除的适合是触发一个事件
看我^^
DeleteCommand这个事件

 

7.整合
    /// <summary>
    /// 执行sql语句
    /// </summary>
    /// <param name="sql"></param>
    public void ExecSql(string sql)
    {
        //创建数据库连接对象
        SqlConnection conn = this.GetConnection();
        conn.Open();
        //创建一个Sql命令对象
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = sql;
        //设置命令对象的连接对象
        cmd.Connection = conn;
        //执行sql命令
        cmd.ExecuteNonQuery();
        //

        conn.Close();
    }

    /// <summary>
    /// js同一管理
    /// </summary>
    /// <param name="msg"></param>
    public void RegJavaScript(string msg)
    {
        Response.Write("<script>alert('"+msg+"')</script>");
    }
    //还有一种使用方式
    public void JavaScript(string msg)
    {
        Page.ClientScript.RegisterClientScriptBlock(Page.GetType(),"al", "alert('"+msg+"')",true);
    }

 

重新测试一下
我会提高视频下载和工程文件的下载,谢谢大家
如果还有什么问题,给我来信
我的地址是:lvyanyang@163.com
 我的博客:http://www.lvyanyang.net
机器比较卡
用2005就是有点卡的

js的用法就是这样
至于css的用法其实很简单
我自己对美工也不熟悉,所以也不方便做
好了就这样了,再见~!

 

原带码

 protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ButCreateTable_Click(object sender, EventArgs e)
    {
        //先编写sql脚本
        string sql = @"
create table [test]
(
id int identity primary key,
title varchar(50),
email varchar(50),
context varchar(100)
)
";
        //直接调用
        this.ExecSql(sql);
 this.Javascript("数据表建立成功!");
 #region
 //然后要连接数据
        //首先我们写一个方法,来返回数据库的连接
        //还要先导入命名空间
        //我们来得到连接
        //SqlConnection conn = this.getConn();
        ////打开连接
        //conn.Open();

        ////然后创建一个sql命令对象
        //SqlCommand cmd = new SqlCommand();

        ////设置cmd对象的连接对象
        //cmd.Connection = conn;

        ////设置cmd对象的命令字符串
        //cmd.CommandText = sql;
        ////执行sql命令
        //cmd.ExecuteNonQuery();
        ////返回受影响的行数

        ////提示操作成功!

        ////记得要关闭连接
        //conn.Close();

        //注意js的用法
      
       //Response.Write("<script>alert('数据表建立成功!')</script>");


 //测试一下
 #endregion
}

    /// <summary>
    /// 创建数据库的连接对象
    /// </summary>
    /// <returns></returns>
    public SqlConnection getConn()
    {
        //首先创建数据库连接字符串
        string connectionstring = "server=localhost;uid=sa;pwd=1;database=testdb";
        //然后创建sql数据库的连接对象
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = connectionstring;
        //设置SqlConnection对象的连接串

       
        //然后返回这个对象
        return conn;

    }
    protected void ButtAdd_Click(object sender, EventArgs e)
    {
        ////先创建数据库连接对象
        //SqlConnection conn = this.getConn();
        ////打开连接
        //conn.Open();

        ////创建命令对象
        //SqlCommand cmd = new SqlCommand();
        //设置sql命令
        //其实就是Insert 语句
        //这个应该是他的Text属性
        string sql = "insert into [Test] values('" + this.Tbtitle.Text + "','" + this.Tbemail.Text + "','" + this.Tbcontext.Text + "')";
        //cmd.CommandText = "insert into [Test] values('"+this.Tbtitle.Text+"','"+this.Tbemail.Text+"','"+this.Tbcontext.Text+"')";

        ////设置连接对象
        //cmd.Connection = conn;

        //// 执行sql命令
        //cmd.ExecuteNonQuery();

        ////记得关闭
        //conn.Close();
        ////提示保存成功
        this.ExecSql(sql);
        this.Javascript("新增成功!");
        //Response.Write("<script>alert('新增成功!')</script>");

        //测试一下
    }
    protected void ButShow_Click(object sender, EventArgs e)
    {
        this.pageBind();
    }
    /// <summary>
    /// 执行数据绑定
    /// </summary>
    public void pageBind()
    {
        //还是一样,建立数据连接对象
        SqlConnection conn = this.getConn();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "select * from [test]";
        cmd.Connection = conn;
        //这个不用解释了吧
        //要先创建一个数据适配器
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        //用这个命令对象来够造
        //再创建一个DataSet
        DataSet ds = new DataSet();
        //用SqlDataAdapter来填充DataSet
        sda.Fill(ds);


        //设置主键
        this.DataGrid1.DataKeyField = "id";
        //允许分页
        this.DataGrid1.AllowPaging = true;
        //设置分页模式
        this.DataGrid1.PagerStyle.Mode = PagerMode.NumericPages;
        //页面型  分号


        //执行数据绑定
        this.DataGrid1.DataSource = ds;

        this.DataGrid1.DataBind();
        //预览一下
        //因为触发了验证
        //取消就可以了
    }
    protected void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
        // 设置页的索引
        this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
        //我们要重新绑定
        //所以我们应该把绑定的代码分离出来
        this.pageBind();
    }
    protected void DataGrid1_DeleteCommand(object source, DataGridCommandEventArgs e)
    {
        //先取主键,然后根据主键拼sql语句,然后删除
        //因为我们再开始的适合设置了主键
        //所以我们现在取主键
        //大家看我怎么取
        string id = this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
        //好了 ,这样我们就取出来了
        //实际上它把所以主键都放到DataKeys这个集合中了
        //我们用索引把它取出来
        //然后组织sql语句
        string sql = "delete [test] where id="+id;

        //还是和刚才一样
        //先建立数据库连接对象
        //设置命令对象
        //最后执行sql
        //我们好像一直再做重复的东西
        //所以我们要提取成一个方法
        //一个执行sql的方法
        //然后调用我们的方法
        this.ExecSql(sql);

        // 删除完要重新绑定的
        this.pageBind();

        //提示成功
        Response.Write("<script>alert('删除成功')</script>");

        //测试&&&
    }


    /// <summary>
    /// 执行sql语句
    /// </summary>
    /// <param name="sql"></param>
    public void ExecSql(string sql)
    {
        //先创建数据库连接对象
        SqlConnection conn = this.getConn();
        //打开连接
        conn.Open();

        //创建命令对象
        SqlCommand cmd = new SqlCommand();
        //设置sql命令
        //其实就是Insert 语句
        //这个应该是他的Text属性
        cmd.CommandText = sql;
            //"insert into [Test] values('" + this.Tbtitle.Text + "','" + this.Tbemail.Text + "','" + this.Tbcontext.Text + "')";

        //设置连接对象
        cmd.Connection = conn;

        // 执行sql命令
        cmd.ExecuteNonQuery();

        //记得关闭
        conn.Close();
    }
    protected void DataGrid1_EditCommand(object source, DataGridCommandEventArgs e)
    {
        //设置控件的模式是编辑模式
        this.DataGrid1.EditItemIndex = e.Item.ItemIndex;
        //执行数据绑定
        this.pageBind();
    }
    protected void DataGrid1_CancelCommand(object source, DataGridCommandEventArgs e)
    {
        //取消的时候设置控件的模式为正常,
        this.DataGrid1.EditItemIndex = -1;
        //这样就可以了
        //绑定数据
        this.pageBind();
    }
    protected void DataGrid1_UpdateCommand(object source, DataGridCommandEventArgs e)
    {
        //关键就是更新的时候
        //我们先取主键
        string id = this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
        //然后取每个文本的值
        //取文本的值比较麻烦,大家看我的写法
        //我一会再解释
        string title = ((TextBox)(this.DataGrid1.Items[e.Item.ItemIndex].Cells[0].Controls[0])).Text;
        //首先 this.DataGrid1.Items是所有行的集合
        //this.DataGrid1.Items[e.Item.ItemIndex]就是编辑所在的行
        //this.DataGrid1.Items[e.Item.ItemIndex].Cells[0]这行的第0列,也就是第一列
        //this.DataGrid1.Items[e.Item.ItemIndex].Cells[0].Controls[0]这行的第0列里面的第1个控件
        //(TextBox)(this.DataGrid1.Items[e.Item.ItemIndex].Cells[0].Controls[0])因为它是对象,所以我们要转成TextBox
        //然后取它的Text属性
        //现在大家明白了吧,因为这些都是集合,所以第一项,下标就是0
        //其他的文本取法一样的
        string email = ((TextBox)(this.DataGrid1.Items[e.Item.ItemIndex].Cells[1].Controls[0])).Text;
        string context = ((TextBox)(this.DataGrid1.Items[e.Item.ItemIndex].Cells[2].Controls[0])).Text;

        //拼sql
        string sql = "update [test] set title = '"+title+"',email='"+email+"',context='"+context+"' where id="+id;
        //执行sql
        this.ExecSql(sql);
        //重新绑定数据
//成功后要把模式改回来
        this.DataGrid1.EditItemIndex = -1;
        this.pageBind();

        // 提示成功
        //其实这个也可以单独写一个方法
       

        string msg = "更新成功!";
        this.Javascript(msg);

        //测试一下啊
        this.RegJavascript(msg);//ok
    }

    public void Javascript(string msg)
    {
        Response.Write("<script>alert('"+msg+"')</script>");
    }
    //还有一种方法,来注册客户端脚本
    public void RegJavascript(string msg)
    {
        // 这个我就不详细解释来
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "dd", "alert('"+msg+"')", true);
    }
    //我们把代码整理一下

posted @ 2008-09-18 11:23  吕艳阳  阅读(460)  评论(0编辑  收藏  举报