笔记:实现网格视图数据选择

实现网格视图数据选择

 

一、实现从一个网格视图中选中数据,并将该数据加入到另一个网格视图中:  

具体步骤:

在被选网格视图中,选中数据-->创建新数据表存放该数据行-->在原网格试图中删除该数据行,在新网格视图中加入新的行

这里以已选课表的网格视图和未选课表的网格视图为例。

具体代码如下:

if (this.dgv_Course.RowCount > 0)  //判断网格视图(dgv_Course) 内的行数是否为空,不为空,才实行以下操作。

{

DataRow currentCourseRow=((DataRowView)this.dgv_Course.CurrentRow.DataBoundItem).Row

, selectedCourseRow = this.SelectedCourseTable.NewRow();

解析:

当前选中的课程数据行可通过课程数据网格视图的CurrentRow.DataBoundItem来取得当前行的数据绑定项,通过DataRowView可直接转换为数据行视图,从而获取其相应的数据行;

已选课程数据行则通过已选课程数据表的方法NewRow来新建用来存放当前选中的数据行(CurrentCoueseRow);

selectedCourseRow["No"] = currentCourseRow["No"];

selectedCourseRow["Name"] = currentCourseRow["Name"];

selectedCourseRow["Credit"] = currentCourseRow["Credit"];

解析:

将当前选中的数据行的各列数据对应赋值给已选课程网格视图的新建行(selectCourseRow);

this.SelectedCourseTable.Rows.Add(selectedCourseRow);

解析:

在已选课程的网格视图中,将新建的数据行加入已选课程表中。

currentCourseRow.Delete();

解析:

在未选课程的网格视图中,删除该被选中的数据行。

二、撤销所选课程

具体步骤:

选中要撤销的数据行--〉根据该行主键,在原来未选课的网格视图中,查找该行的值(在未点击提交按钮时,该行只是在网格视图中被标注为删除状态,而实际被删除(即在数据库中被删除),是在打开数据库对数据库进行操作的提交按钮的代码)--〉在已选课程的网格试图中,移除该行(因为未点击提交按钮,在数据库中尚未被添加)--〉将在未选课程网格视图中,将该行的状态修改为拒绝删除。

具体代码如下:

 if (this.dgv_SelectedCourse.RowCount > 0)                                                       //若课程数据网格视图内的行计数大于0;

            {

                DataRow selectedCourseRow =                                                                 //声明已选课程数据行;

                    ((DataRowView)this.dgv_SelectedCourse.CurrentRow.DataBoundItem).Row;                    //当前课程数据行可通过已选课程数据网格视图的当前行的数据绑定项获得,后者可直接转换为数据行视图,从而获取其相应的数据行;

if (selectedCourseRow.RowState == DataRowState.Unchanged)                                   解析:

若已选课程数据行的行状态为未更改(即该课程为先前已选、且已提交,则当前不允许退选);

{

                    return;      //返回;                                                                           

 }

else      解析:否则(即该课程刚从课程数据表中选中、尚未提交,则当前允许退选

string courseNo = selectedCourseRow["No"].ToString();

解析:

声明已删课程数据行(即先前从课程数据表中删除的数据行);DataRow deletedCourseRow =

this.CourseTable.Select("No='" + courseNo + "'", "", DataViewRowState.Deleted)[0];

解析:

已删课程数据行可通过课程数据表的方法Select,该方法接受查询条件、排序条件、行状态条件等参数,并返回数据行数组;

 

this.SelectedCourseTable.Rows.Remove(selectedCourseRow);

解析:

从已选课程数据表的行集合中移除当前课程数据行;随后该行的状态为附加

deletedCourseRow.RejectChanges();

解析:

已删课程数据行拒绝更改,即回滚先前对其执行的删除;随后该行的状态为未更改;

 

posted @ 2017-11-06 23:25  奔跑吧菜鸟  阅读(372)  评论(0编辑  收藏  举报