前端界面操作DataTable数据表

一、 知识点描述

DataGridView 取得或者修改当前单元格的内容:

当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null)

// 取得当前单元格内容

Console.WriteLine(DataGridView1.CurrentCell.Value);

// 取得当前单元格的列 Index

Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);

// 取得当前单元格的行 Index

Console.WriteLine(DataGridView1.CurrentCell.RowIndex);

另外,使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的行:DataGridView.CurrentCellAddress.Y 和列: DataGridView.CurrentCellAddress.X 。这对于避免取消共享行的共享非常有用。

当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过 CurrentCell 来设定

DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。

二、 思维导图

三、 示例代码

1、 创建数据库连接SQLConnection

using (SqlConnection conn = new SqlConnection(DBHelper.connString))

2、 药品表填充进表一

sqlCommand.Connection = sqlConnection;

sqlCommand.CommandText =

"SELECT PrescriptionNo,PrescriptionName,PrescriptionPrice FROM Prescription WHERE PrescriptionNo NOT IN"

+ "(SELECT PrescriptionNo FROM SelectionPrescription WHERE PatientNo=‘patNo‘);";

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();

sqlDataAdapter.SelectCommand = sqlCommand;

this.Prescription = new DataTable();

this.SelectionPrescription = new DataTable();

sqlConnection.Open();

sqlDataAdapter.Fill(this.Prescription);

3、个人药品表填充进表二

sqlCommand.CommandText =

"SELECT P.PrescriptionNo,P.PrescriptionName,P.PrescriptionPrice,SP.OrderPrescription"

+ " FROM Prescription AS P JOIN SelectionPrescription AS SP ON P.PrescriptionNo=SP.PrescriptionNo"

+ " WHERE SP.PatientNo=‘patNo‘;"; sqlDataAdapter.Fill(this.SelectionPrescription);

sqlConnection.Close();

4、 设置按钮进行数据传递操作

private void btn_Add_Click(object sender, EventArgs e)

{

if (this.dgv_Prescription.RowCount > 0)

{

DataRow

currentCourseRow = ((DataRowView)this.dgv_Prescription.CurrentRow.DataBoundItem).Row

, selectedCourseRow = this.SelectionPrescription.NewRow();

selectedCourseRow["PrescriptionNo"] = currentCourseRow["PrescriptionNo"];

selectedCourseRow["PrescriptionName"] = currentCourseRow["PrescriptionName"];

selectedCourseRow["PrescriptionPrice"] = currentCourseRow["PrescriptionPrice"];

this.SelectionPrescription.Rows.Add(selectedCourseRow);

currentCourseRow.Delete();

this.lbl_PrescriptionSum.Text =

"共" + this.SelectionPrescription.Compute("SUM(PrescriptionPrice)", "").ToString() + "元";

}

}

private void btn_Remove_Click(object sender, EventArgs e)

{

if (this.dgv_SelectionPrescription.RowCount > 0) {

DataRow selectedCourseRow =

((DataRowView)this.dgv_SelectionPrescription.CurrentRow.DataBoundItem).Row;

if (selectedCourseRow.RowState == DataRowState.Added)

{

string PrescriptionNo = selectedCourseRow["PrescriptionNo"].ToString();

DataRow deletedPrescriptionRow =

this.Prescription.Select("PrescriptionNo=‘" + PrescriptionNo + "‘", "", DataViewRowState.Deleted)[0];

deletedPrescriptionRow.RejectChanges();

this.SelectionPrescription.Rows.Remove(selectedCourseRow);

this.lbl_PrescriptionSum.Text =

"共" + this.SelectionPrescription.Compute("SUM(PrescriptionPrice)", "").ToString() + "元";

}

}

}

5、 每次数据传递后进行价格更新操作

if (this.dgv_Prescription.RowCount > 0)

{

DataRow

currentCourseRow = ((DataRowView)this.dgv_Prescription.CurrentRow.DataBoundItem).Row

, selectedCourseRow = this.SelectionPrescription.NewRow();

selectedCourseRow["PrescriptionNo"] = currentCourseRow["PrescriptionNo"];

selectedCourseRow["PrescriptionName"] = currentCourseRow["PrescriptionName"];

selectedCourseRow["PrescriptionPrice"] = currentCourseRow["PrescriptionPrice"];

this.SelectionPrescription.Rows.Add(selectedCourseRow);

currentCourseRow.Delete();

this.lbl_PrescriptionSum.Text =

"共" + this.SelectionPrescription.Compute("SUM(PrescriptionPrice)", "").ToString() + "元";

}

6、 提交选定后的药品目录

SqlConnection sqlConnection = new SqlConnection();

sqlConnection.ConnectionString =

DBHelper.connString;

SqlCommand insertCommand = new SqlCommand();

insertCommand.Connection = sqlConnection;

insertCommand.CommandText =

"INSERT SelectionPrescription(PatientNo,PrescriptionNo,OrderPrescription)"

+ "VALUES(@PatientNo,@PrescriptionNo,@OrderPrescription);";

insertCommand.Parameters.AddWithValue("@PatientNo", "PatientNo");

insertCommand.Parameters.Add("@PrescriptionNo", SqlDbType.Char, 4, "PrescriptionNo");

insertCommand.Parameters.Add("@OrderPrescription", SqlDbType.Bit, 0, "OrderPrescription");

SqlCommand updateCommand = new SqlCommand();

updateCommand.Connection = sqlConnection;

updateCommand.CommandText =

"UPDATE SelectionPrescription"

+ " SET [email protected]"

+ " WHERE [email protected] AND [email protected];";

updateCommand.Parameters.AddWithValue("@StudentNo", "PatientNo");

updateCommand.Parameters.Add("@CourseNo", SqlDbType.Char, 4, "PrescriptionNo");

updateCommand.Parameters.Add("@OrderBook", SqlDbType.Bit, 0, "OrderPrescription");

SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();

sqlDataAdapter.InsertCommand = insertCommand;

sqlDataAdapter.UpdateCommand = updateCommand;

sqlConnection.Open();

int rowAffected = sqlDataAdapter.Update(this.SelectionPrescription);

sqlConnection.Close();

MessageBox.Show("插入" + rowAffected.ToString() + "行。");

四、 效果截图

原文地址:https://www.cnblogs.com/YunQiDick/p/9998349.html

时间: 2024-11-09 06:40:02

前端界面操作DataTable数据表的相关文章

前端界面操作DataTable数据表2

一. 知识点描述 DataTable 是一个临时保存数据的网格虚拟表(表示内存中数据的一个表.).DataTable是ADO dot net 库中的核心对象.它无须代码就可以简单的绑定数据库.C#里可以使用gridview和dataset来连接数据库读取数据表. DataTable 表示一个内存内关系数据的表,可以独立创建和使用,也可以由其他 .NET Framework 对象使用,最常见的情况是作为 DataSet 的成员使用. 可以使用相应的 DataTable 构造函数创建 DataTab

c#用NPOI将excel文件内容读取到datatable数据表中

将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable 1 /// <summary> 2 /// 将excel文件内容读取到DataTable数据表中 3 /// </summary> 4 /// <param name="fileName">文件完整路径名</param> 5 /// <param name=

前端学数据库之数据表操作

× 目录 [1]准备工作 [2]创建数据表 [3]查看数据表[4]记录操作[5]记录约束[6]列操作[7]约束操作[8]修改列[9]数据表更名 前面的话 mysql数据库中的数据存储在被称为表(tables)的数据库对象中.表是相关的数据项的集合,它由列(字段)和行(记录)组成.下面将详细介绍数据表操作 准备工作 在进行数据表操作之前,需要先登录mysql服务器,创建一个数据库,并使用创建好的数据库 创建数据表 下面在db1数据库中创建数据表tb1 CREATE TABLE [IF NOT EX

ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )

//TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: public function testdb(){ $obj=M("User"); dump($obj); } 此时浏览器输出: object(Model)#5 (20) { ["_extModel:private"] => NULL ["db:protecte

多用户操作一个数据表时的并发性操作

事务处理(多用户同时操作一条信息时是用-并发) 在c/s或多层中,如果两个用户同时打开一条记录,修改后提交会产生更新冲突: 据说办法有二:1.打开同时锁定表的记录 2.浦获错误,撤消其中一个用户的修改,但是很少见到具体实现的代码:请大家告诉具体的代码怎么写: 1.打开时如何锁定一条记录? 2.如何扑获更新错误?在delphi中调试时会报“该记录读出后已经被再次修改”,而在运行时如何判定错误为更新冲突?因为更新时其他的错误如输入不合法等也可能报错,如何把更新冲突和其他的分开? ==========

MySQL操作(三)数据表

一.创建数据表 方式1 CREATE TABLE IF NOT EXISTS user( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT, sex TINYINT NOT NULL DEFAULT 0 )ENGINE=MyISAM DEFAULT CHARSET=utf8; 方式2 --1. 创建一个临时的新表,首先复制旧表的结构(包含索引) CREATE TABLE new_table LIKE old_tab

oracle——数据表的相关操作——删除数据表

创建数据表; create table 表名 ( 列明1 数据类型1 [约束性条件], 列明1 数据类型1 [约束性条件], …… ) tablespace 表空间 create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test sele

python操作数据库-数据表

数据表: 数据类型: 帮助的三种形式: 在cmd中输入: help 要帮助的主题词,或 ? 要帮助的主题词 或  \h 要帮助的主题词 . 数据表的创建: CREATE database IF NOT exists zbltest2 default character set 'utf8'; USE zbltest2; CREATE TABLE IF NOT EXISTS `user`( id SMALLINT, username VARCHAR(20) ) ENGINE=INNODB CHAR

使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据

数据集(DataSet).数据表(DataTable).集合(Collection)概念是.NET FrameWork里提供数据类型,在应用程序编程过程中会经常使用其来作为数据的载体,属于ADO.NET的一部分.今天我们WCF分布式开发步步为赢第8节的内容:使用数据集(DataSet).数据表(DataTable).集合(Collection)传递数据.本节内容除了介绍几个类型概念外的,同样会详细给出代码的实现过程.此外我们会分析这几种数据类型的优势和缺点,以及在面向对象的服务开发过程中如何解决