-------------------------------------------------  SellProdectManager.cs  ---------------------------------------------------

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Prodect.BLL
{
    public class SellProdectManager
    {
        public static DataSet GetSellProdectDataSet() {
            DataSet ds = new DataSet();//新建一个 DataSet
            DataTable sellProdect = new DataTable("SellProdect");//新建一个 DataTable

DataColumn id = new DataColumn("Id", typeof(int));//新建 Id 列
            id.AutoIncrement = true;//设置该列为自赠列
            id.AutoIncrementSeed = 1;//设置该列的起始值
            id.AutoIncrementStep = 1;//设置自赠的步长

DataColumn name = new DataColumn("Name",typeof(String));//新建 Name 列
            name.AllowDBNull = false;//设置该列是否允许为空
            
            DataColumn repertory = new DataColumn("Repertory",typeof(String));
            repertory.AllowDBNull = false;
            
            //往 DataTable(sellProdect) 的列集合填充新建的列
            sellProdect.Columns.AddRange(new DataColumn[] { id, name, repertory });

//创建与 DataTable(sellProdect) 结构相同的行
            DataRow row = sellProdect.NewRow();
            row["Name"] = "电冰箱";
            row["Repertory"] = 21;

//往 DataTable(sellProdect) 的行集合填充新建的行 
            sellProdect.Rows.Add(row);

//往 DataSet(ds) 的表集合填充 DataTable(sellProdect) 的这个新建的表
            ds.Tables.Add(sellProdect);

// DataSet(ds) 更改确认
            ds.AcceptChanges();
            return ds;
        }
    }
}

----------------------------------------------------  Prodect.cs  -------------------------------------------------------

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Prodect.BLL;

namespace Prodect
{
    public partial class Prodect : Form
    {
        public Prodect()
        {
            InitializeComponent();
        }

DataSet _sellProdect = null;
        //窗体加载触发的事件
        private void Prodect_Load(object sender, EventArgs e)
        {
            //获得 DataSet 
            _sellProdect = SellProdectManager.GetSellProdectDataSet();
            //绑定 DataGridView 数据源
            dgvSell.DataSource = _sellProdect.Tables["SellProdect"];
        }
  
        //行状态发生改变触发的事件
        private void dgvSell_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {
            if (dgvSell.SelectedRows.Count == 0)
                return;
            //获得当前 DataGridView 所选择的行
            DataGridViewRow row = dgvSell.SelectedRows[0];
            //获取用于填充行的数据绑定对象,然后强制转换成(DataRowView)
            DataRowView rv = row.DataBoundItem as DataRowView;
            txtName.Text = rv["Name"].ToString();
            txtPrice.Text = rv["Price"].ToString();
            txtCount.Text = rv["Repertory"].ToString();
        }
  
        //删除按钮事件
        private void btnDel_Click(object sender, EventArgs e)
        {
            if (dgvSell.SelectedRows.Count == 0)
                return;
            //获得当前 DataGridView 所选择的行
            DataGridViewRow row = dgvSell.SelectedRows[0];
            //获取用于填充行的数据绑定对象,然后强制转换(DataRowView)
            DataRowView rv = row.DataBoundItem as DataRowView;
            //删除选择的该行
            rv.Delete();
        }
  
        //保存修改按钮事件
        private void btnSave_Click(object sender, EventArgs e)
        {
            //DataSet(_sellProdect)  确认更新
            _sellProdect.AcceptChanges();
        }
  
        //撤消修改按钮事件
        private void btnReject_Click(object sender, EventArgs e)
        {
            //DataSet(_sellProdect)  撤消更新
            _sellProdect.RejectChanges();
        }
    }
}

C# - 自定义 DataSet 的使用的更多相关文章

  1. 自定义DataSet

    //创建数据集 DataSet dataSet = new DataSet(); //创建虚拟数据表 DataTable datatable = new DataTable(); //获取列集合,添加 ...

  2. DataSet和DataTable详解

    先构建一个结构与用户请求数据结构相同的DataTable,然后将用户的请求数据填充到构建好的DataTable中,最后将DataTable添加到DataSet中. DataTable,,DataCol ...

  3. [Pytorch]PyTorch Dataloader自定义数据读取

    整理一下看到的自定义数据读取的方法,较好的有一下三篇文章, 其实自定义的方法就是把现有数据集的train和test分别用 含有图像路径与label的list返回就好了,所以需要根据数据集随机应变. 所 ...

  4. 解析大型.NET ERP系统架构设计 Framework+ Application 设计模式

    我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应该具备良好的可扩展性和可维护性,系统中的功能紧密关联.除去业务上的复杂性,如何设计这样的一个协 ...

  5. 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

      先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...

  6. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

    摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...

  7. NET ERP系统架构设计

    解析大型.NET ERP系统架构设计 Framework+ Application 设计模式 我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应 ...

  8. 一个操作oracle的c#类 含分页

    有别于以前的一个OracleHelper,这个版各有所长,MARK下. using System; using System.Data; using System.Data.OracleClient; ...

  9. [深度学习] pytorch利用Datasets和DataLoader读取数据

    本文简单描述如果自定义dataset,代码并未经过测试(只是说明思路),为半伪代码.所有逻辑需按自己需求另外实现: 一.分析DataLoader train_loader = DataLoader( ...

随机推荐

  1. 项目中常用方法总结(将将DataTable数据集映射到实体对象)【转】

    本篇把项目中用到的一些通用方法总结出来, 这些方法因为经常需要在项目中用到,所以把它们归纳在一起, 形成一个.dll 文件是一个理想的选择. 这样也便于日后缩短开发周期. 一. 把一个DataGrid ...

  2. 彻底解决TAP(点透)提升移动端点击响应速度

    使用fastclick 尼玛使用太简单了,直接一句: FastClick.attach(document.body); 于是所有的click响应速度直接提升,刚刚的!什么input获取焦点的问题也解决 ...

  3. CentOS用gparted实现无损调整磁盘分区大小

    作者: sheldon 测试服务器硬盘挂载在/usr下的分区大小只有10G,随着必须软件都安装在这个目录下,这个分区已经满额,给分区扩容刻不容缓,window下有PQ分区工具,Linux下也有gpar ...

  4. 蜗牛爱课- CGAffineTransformMakeRotation 实现一张图片的自动旋转

    self.locationTimer =[NSTimer scheduledTimerWithTimeInterval: 0.01 target: self selector:@selector(tr ...

  5. C语言预处理指令

    C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性.ANS ...

  6. 【MVC】过滤器

    APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. MVC支持的过滤器 ...

  7. Docker终极指南:为什么Docker能做这么多事

    Docker终极指南:为什么Docker能做这么多事 http://www.aboutyun.com/thread-11499-1-1.html

  8. Android 相对布局常用属性

    Android 布局属性详解 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false     android:layout_centerHrizontal  水平居中 ...

  9. Node.js包管理器:

    Node.js包管理器: 当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require ...

  10. C语言函数qsort的使用方法

    qsort函数stdlib.h文件中,函数原型为 void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,co ...