应用场景

     对datagridview控件使用了解,以及操作datagridview选中的信息删除,并且有二次确认后才删除用户信息。相应的删除listbox中用户信息,下面一起看看需要哪些准备?

开发环境

     开发工具:Microsoft Visual Studio 旗舰版、SQL Server 2008.

     开发环境:.NET Framework 4 Client Profile.

实现步骤

1、搭建MVC框架、建立PERSON_T表格;

    首先,了解什么是MVC框架,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

我在VS项目中建立一个目录如下图:

   然后,在SQL2008中FMSDB数据库中建立PERSON_T表;具体代码见下方:

USE [FMSDB]
GO /****** Object: Table [dbo].[PERSON_T] Script Date: 07/30/2013 15:47:33 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE TABLE [dbo].[PERSON_T](
[NAME] [nvarchar](50) NULL,
[AGE] [int] NULL
) ON [PRIMARY] GO

2、创建DataGridView后配置

DataGridView控件具体配置

AllowUserToAddRows改为false
AutoSizeColumnsMode改为Fill
ColumnHeadersVisible
Dock改为Bottom将datagridview放在winfrom最底端
MultiSelect 改为false 后用户只选中一行数据
RowHeadersVisible改为false第一列将会被隐藏
SelectionMode改为FullRowSelect 选中一整行数据
contextMenuStrip改为contextMenuStrip1 绑定contextStrip
 
3、给添加信息到datagridview中,通过循环person对象给dataGridView1赋值,具体代码见下
 
 private void btnAddGridview_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count >=0)
{
dataGridView1.Rows.Clear();
for (int i = 0; i < listBoxFor.Items.Count; i++)
{ Person p = (Person)listBoxFor.Items[i];
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells["Column1"].Value = p.ID;
dataGridView1.Rows[i].Cells["Column2"].Value = p.Name;
dataGridView1.Rows[i].Cells["Column3"].Value = p.Age;
dataGridView1.Rows[i].Cells["Column4"].Value = p.Position;
dataGridView1.Rows[i].Cells["Column5"].Value = p.HomeAddresss;
dataGridView1.Rows[i].Cells["Column6"].Value = p.IdentifyNumber;
}
}
} 4、给datagridview中添加右键删除选中一行用户信息操作,具体代码见下
 
        private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
string name;
if (dataGridView1.SelectedRows.Count>0)
{ DialogResult comfirm = MessageBox.Show("确定删除信息...", "确定删除", MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation);
if (comfirm == DialogResult.Yes)
{ name = dataGridView1.CurrentRow.Cells["Column2"].Value.ToString(); bool result = Control.DeleteUser(name); if (result == true)
{
MessageBox.Show("成功删除用户选中信息"); }
else
{
MessageBox.Show("删除用户失败!"); }
RefreshUI(name);
}
}
} 5、作删除操作时,将listbox与datagridview中删除信息后,进行刷新操作,具体代码见下
        private void RefreshUI(string name)
{
for (int i = 0; i <listBoxFor.Items.Count; i++)
{
Person p = (Person) listBoxFor.Items[i];
if (p.Name == name)
{
listBoxFor.Items.RemoveAt(i);
break;
} }
btnAddGridview_Click(null, null);
}
 
运行后的效果图如下
右键后图片如下
按确定后
按是按钮之后
 

技术点

1、取出listBox中封装的对象的属性,给datagridview赋值。

2、通过获取选中datagridview中数据,获取datagridview中name值,通过用户名删除用户信息。

3、删除用户信息时,进行界面刷新操作,新建一个刷新界面的方法。

感想

通过此实例来加强面向对象的编程,熟练运用面向对象的方法,将数据倒来倒去,最终获取想要的信息。

 源码下载

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

将listBox中信息显示在dataGridview中,操作datagridview后删除listBox信息和SQL数据库信息 续(浅谈listBox..)的更多相关文章

  1. 浅谈ListBox控件,将对象封装在listBox中,在ListBox中显示对象中某个属性,在ListBox中移除和移动信息

    大家好,俗称万事开头难,不经历风雨,怎能见彩虹.在此小编给大家带来一个自己练习的小实例,希望与大家一起分享与交流.下面进入应用场景,从SQL2008数据库取出数据,给ListBox赋值在界面并显示出来 ...

  2. Mysql 性能优化7【重要】sql语句的优化 浅谈MySQL中优化sql语句查询常用的30种方法(转)

    原文链接   http://www.jb51.net/article/39221.htm 这篇文章大家都在转载,估计写的有条理吧,本人稍微做一下补充 1.对查询进行优化,应尽量避免全表扫描,首先应考虑 ...

  3. 重新学习MySQL数据库6:浅谈MySQL的中事务与锁

    『浅入深出』MySQL 中事务的实现 在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇 ...

  4. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  5. 浅谈C++11中的多线程(三)

    摘要 本篇文章围绕以下几个问题展开: 进程和线程的区别 何为并发?C++中如何解决并发问题?C++中多线程的基本操作 浅谈C++11中的多线程(一) - 唯有自己强大 - 博客园 (cnblogs.c ...

  6. Eclipse连接到My sql数据库之前操作

    Eclipse连接到My sql数据库之前操作 1:首先是安装My sql数据库(为了减少你的麻烦,按照下面的连接,下载即可)百度云链接:http://pan.baidu.com/s/1mitWmbm ...

  7. 关于datagridview中checkbox列在选中行的情况下无法操作值

    这几天做项目的时候碰到了个小问题,在datagridview中实现对checkbox列的全选和反选功能.代码如下              //全选              if (dataGrid ...

  8. [Winform] DataGridView 中 DataGridViewComboBox 的可编辑

    在 DataGridView 中设置的 DataGridViewComboBox,默认是不可编辑的,即使将其列属性 DisplayStyle 设置成 ComboBox 或其他,也无法编辑: 故作如下处 ...

  9. DataGridView中实现checkbox全选的自定义控件

    在DataGridView中实现Checkbox的全选的方法就是在列头画一个checkbox, 并给其一个事件. 这个之前很多blog都有写, 这里就不多废话了,  codeproject上面有示例代 ...

随机推荐

  1. 安装完出现Deprecated: Function ereg_replace() is deprecated in

    php5.3说明   先不要用php5.3吧,毕竟目前版本要修改这个工作量太大,而且可能会有很多未知错误,这只能在下一版全部改用perl的正则了,都不明白php官方发 什么神经,此外不支持应该是直接屏 ...

  2. UVa 11077 Find the Permutations(置换+递推)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35431 [思路] 置换+递推 将一个排列看作一个置换,分解为k个循 ...

  3. Android Studio下载及离线升级方法

    由于众所周知的原因,android官网无法访问,所以我们要用到翻.墙.工具,我用的是自.由.门,大家自行搜索下载. android studio下载地址: https://dl.google.com/ ...

  4. sql2005中如何启用SA账号

    如下图

  5. hdu 4287

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4287 #include<cstdio> #include<cstring> # ...

  6. SIP协议错误代码大全

    100 Trying 说明caller正在呼叫,但还没联系上callee. 180 Ringing 说明callee已经被联系上,callee的铃正在响.收到这个信息后,等待200 OK 181 Ca ...

  7. Google网页搜索

    本博文的主要内容有 .Google网页搜索的介绍 .Google网页搜索的使用偏好设置 .Google网页搜索的普通搜索 .Google网页搜索的高级搜索 .Google高级搜索之一:布尔逻辑搜索   ...

  8. ll 详解

    长选项必须使用的参数对于短选项时也是必需使用的.  -a, --all                     不隐藏任何以. 开始的项目  -A, --almost-all             ...

  9. 【matlab】matalb生成dll给Cpp用

    http://blog.csdn.net/scudz/article/details/13628917 这篇文章写得很好,我跟据这个,操作了一下,发现,好用,精简版总结如下 1. matlab打开一个 ...

  10. nanosleep纳秒级延迟

    //函数原型 int nanosleep(struct timespec *req, struct timespec *rem) //参数列表: // req:要求的睡眠时间 // rem:剩余的睡眠 ...