1.NET三层架构与三层架构下GRIDVIEW控件增删改操作详解
- 格式:pdf
- 大小:589.87 KB
- 文档页数:15
三层架构下的GridView的增删改
1 新建一个数据库test,新建一个表Users,表中有如下字段(ID,username,password)。
其中ID为表示字段。
结构如下图:
2 新建三个类库DiaryBLL(业务逻辑层),DiaryDAL(数据访问层),DiaryModel(业务实体层),将上述三个类库放至解决方案DiaryPro中,然后在新建一个网站DiaryWeb。
然后右键单击网站,设为启动项目,结构图如下:
3 添加类库的引用关系
DiaryBLL添加DiaryDAL和DiaryModel,如下图所示:
DiaryDAL添加DiaryModel,如下图所示:
表示层Web添加上述三个,如下图所示:
4 类库中类的编写
1)DiaryModel(业务实体层),新建一个User类代码如下:using System;
using System.Collections.Generic;
using System.Text;
namespace DiaryModel
{
[Serializable] //序列化
public class Users
{
int _UserID;
string _UserName;
string _Password;
public int UserID
{
get { return _UserID; }
set { _UserID = value; }
}
///
///用户名///。
数据控件DataGridView添加、删除和修改数据库中的内容作者:天涯来源:中国自学编程网发布日期:1214063638介绍一个数据控件DataGridView,它是 3.5中新增加的的重要控件。
它是一种网格形式的控件,能以表格的形式显示数据,它的优势是能多行显示数据,在数据库的操作中会经常用到。
(1)打开VS2008,在D:\C#\ch14目录下建立名为DataGridViewTest的Windows应用程序,打开工程,为当前窗体添加控件,如表14-2所示。
表14-2 添加控件列表控件名NameTextDataGridViewdataGridView1ButtonbtnRef更新设置ButtonbtnDelete删除(2)接下来需要设置DadaAdapter和DataSet,方法同上一节一样。
选中DataGridView的DataSource属性。
(3)单击“下一步”按钮,选择“数据连接”图标。
(4)最后一步需要选择数据库对象,本例是要操作StudentInf数据库中的表,所以选择“表”复选框。
(5)设置完毕后,整个程序界面就设置完了。
程序界面设计完毕后,接下来要做的工作就是通过修改dataGridView1中的数据来更新数据库中的内容。
它实现的原理很简单,通过studentInfDataSet把dataGridView1绑定到Class1表,studentInfDataSet处于中间位置,所以在dataGridView1中修改的数据必须要传递到studentInfDataSet后才能改变数据库中的内容。
(1)双击“更新设置”按钮,添加如下代码。
this.sqlDataAdapter1.Update(this.studentInfDataSet);该代码的功能是调用sqlDataAdapter1的Update()方法实现对studentInfDataSet的更新。
(2)按F5键,程序运行以后,对dataGridView1添加一行新的数据,然后单击“更新设置”按钮,完成后关闭程序再打开。
:1)DiaryModel(业务实体层),新建一个User类代码如下:using System;using System.Collections.Generic;using System.Text;namespace DiaryModel{[Serializable] //序列化public class Users{int _UserID;string _UserName;string _Password;public int UserID{get { return _UserID; }set { _UserID = value; }}///<summary>///用户名///</summary>public string UserName{get { return _UserName; }set { _UserName = value; }}///<summary>///密码///</summary>public string Password{get { return _Password; }set { _Password = value; }}}该类可以获得User类的各个字段。
<appSettings><add key="DbHelperProvider" value="System.Data.SqlClient"/></appSettings><connectionStrings><add name="DbHelperConnectionString" connectionString="Data Source=FAN;InitialCatalog=test;User ID=sa;Password=20;Connect Timeout=18000"/></connectionStrings>(将DBHelper.cs类纺织DiaryDAL目录下,要注意的是DBHelper类下的命名空间要改为DiaryDAL)新建一个UserService.cs类,实现增删改查等相关操作,具体代码如下所示:using System;using System.Collections.Generic;using System.Text;using System.Data;using DiaryModel; //记得要添加引用namespace DiaryDAL{public class UserService{//添加public static bool Add(Users user){string sql = "insert into Users(username,password) values(@username,@password)";Dictionary<string,object> dic=new Dictionary<string,object>();dic.Add("@username", erName);dic.Add("@password", user.Password);return DBHelper.ExecuteNonQuery(sql, dic) > 0 ? true : false ;}//删除public static bool Delete(int UserID){string sql = "delete from Users where ID=@UserID";Dictionary<string, object> dic = new Dictionary<string, object>();dic.Add("@UserID", UserID);return DBHelper.ExecuteNonQuery(sql, dic) > 0 ? true : false;}//修改public static bool Modify(Users user){string sql = "update Users set username=@username,password=@password where ID=@UserID";Dictionary<string, object> dic = new Dictionary<string, object>();dic.Add("@username", erName);dic.Add("@password", user.Password);dic.Add("@UserID", erID);return DBHelper.ExecuteNonQuery(sql, dic) > 0 ? true : false;}//显示public static List<Users> GetAllUsers(){string sql = "select * from Users";DataTable dt = DBHelper.GetDataSet(sql);List<Users> list = new List<Users>();foreach (DataRow dr in dt.Rows){Users user = new Users();erID = (int)dr["ID"];erName = dr["username"].ToString();user.Password = dr["password"].ToString();list.Add(user);}return list;}}}2)DiaryBLL(业务逻辑层)新建一个UserManage.cs类,具体代码如下:using System;using System.Collections.Generic;using System.Text;using System.Data;using DiaryModel;namespace DiaryBLL{public class UserManage{public static bool Add(Users user){return erService.Add(user);}public static bool Delete(int UserID){return erService.Delete(UserID);}public static bool Modify(Users user){return erService.Modify(user);}public static List<Users> GetAllUsers(){return erService.GetAllUsers();}}}<%@Page Language="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default" %><!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>无标题页</title></head><body><form id="form1"runat="server"><div>用户列表:<br/><asp:GridView ID="GridView1"runat="server"AutoGenerateColumns="False"BackColor="White"BorderColor="#CCCCCC"BorderStyle="None"BorderWidth="1px"CellPadding="3"PageSize="4"Width="778px"OnRowDeleting="GridView1_RowDeleting" OnRowDataBound="GridView1_RowDataBound"OnRowEditing="GridView1_RowEditing" OnRowCancelingEdit="GridView1_RowCancelingEdit"OnRowUpdating="GridView1_RowUpdating"> <FooterStyle BackColor="White"ForeColor="#000066"/><RowStyle ForeColor="#000066"/><Columns><asp:TemplateField HeaderText="用户ID"><ItemTemplate><asp:Label ID="Label1"runat="server"Text='<%# Bind("UserID") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="用户名"><EditItemTemplate><asp:TextBox ID="TextBox2"runat="server"Text='<%# Bind("UserName") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label2"runat="server"Text='<%# Bind("UserName") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="密码"><EditItemTemplate><asp:TextBox ID="TextBox3"runat="server"Text='<%# Bind("Password") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label3"runat="server"Text='<%# Bind("Password") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="操作"ShowHeader="False"><EditItemTemplate><asp:LinkButton ID="LinkButton1"runat="server"CausesValidation="True" CommandName="Update"Text="更新"></asp:LinkButton><asp:LinkButton ID="LinkButton2"runat="server"CausesValidation="False" CommandName="Cancel"Text="取消"></asp:LinkButton></EditItemTemplate><ItemTemplate><asp:LinkButton ID="LinkButton1"runat="server"CausesValidation="False" CommandName="Edit"Text="编辑"></asp:LinkButton><asp:LinkButton ID="LinkButton2"runat="server"CausesValidation="False" CommandName="Delete"OnClientClick="javascript:return confirm('确认要删除么?');"Text="删除"></asp:LinkButton></ItemTemplate></asp:TemplateField></Columns><PagerStyle BackColor="White"ForeColor="#000066"HorizontalAlign="Left"/><SelectedRowStyle BackColor="#669999"Font-Bold="True"ForeColor="White"/><HeaderStyle BackColor="#006699"Font-Bold="True"ForeColor="White"/></asp:GridView></div><br/><br/><br/>添加用户<br/>用户名:<asp:TextBox ID="tb_username"runat="server"></asp:TextBox><br/>密码: <asp:TextBox ID="tb_pwd"runat="server"></asp:TextBox><br/><asp:Button ID="Button1"runat="server"Text="添加"OnClick="Button1_Click"/> </form></body></html>后台代码如下所示:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using DiaryModel;public partial class_Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){Bind();}}protected void Bind(){GridView1.DataSource = erManage.GetAllUsers();GridView1.DataBind();}protected void Button1_Click(object sender, EventArgs e)Users user = new Users();erName = this.tb_username.Text.ToString().Trim();user.Password = this.tb_pwd.Text.ToString().Trim();bool bol=erManage.Add(user);if (bol){Response.Redirect("Default.aspx");}}protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e){int UserID = Convert.ToInt32((GridView1.Rows[e.RowIndex].FindControl("Label1") as Label).Text);bool bol = erManage.Delete(UserID);if (bol){Bind();}else{Response.Write("<script>alert('删除失败');location.href=Default.aspx;</script>");}}protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow){LinkButton lb = e.Row.FindControl("LinkButton2") as LinkButton;if (lb.Text == "删除"){lb.Attributes.Add("onclick", "return confirm('确认要删除么?');");}}}///<summary>///让当前处于修改状态///</summary>///<param name="sender"></param>///<param name="e"></param>protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e){GridView1.EditIndex = e.NewEditIndex;Bind();}///<summary>///让当前行处于绑定状态///</summary>///<param name="sender"></param>///<param name="e"></param>protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e){GridView1.EditIndex = -1;Bind();}///<summary>///更新至数据库///</summary>///<param name="sender"></param>///<param name="e"></param>protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e){Users user = new Users();erID = Convert.ToInt32((GridView1.Rows[e.RowIndex].FindControl("Label1") as Label).Text);erName = (GridView1.Rows[e.RowIndex].FindControl("TextBox2") as TextBox).Text.ToString();user.Password = (GridView1.Rows[e.RowIndex].FindControl("TextBox3") as TextBox).Text.ToString();bool bol = erManage.Modify(user);if (bol){Response.Write("<script>alert('修改成功');</script>");GridView1.EditIndex = -1;Bind();}else{Response.Write("<script>alert('修改失败');</script>");}}。
第五天--《2014-07-21三层架构》--在DataGridView控件上直接修改和U。
⼀、上午《01、修改dgv控件中下拉列表的添加》--《03、添加了ValueMenber之后列绑定属性的修改》1、将DataGridView中的列指定为需要的类型。
如下图:创建DataGridViewColumn时需要指定为真正需要的⼦类型。
这样才能更好地编辑⾏数据。
这些类型有:Button、CheckBox、ComboBox、Image、Link、TextBox 这些⼦类型的列,正如其名。
与同名的单独控件有类似的属性、功能和事件。
⽐如DataGridViewButtonColumn就像⼀个Button控件;⽽DataGridViewComboBoxColumn就像⼀个ComboBox控件,可以绑定下拉列表的数据源,可以指定项应该显⽰绑定对象的什么属性,选中值应该对应绑定对象的什么属性。
等等。
2、指定下拉项的数据源。
如以下代码:1//在DataGridView表格控件绑定数据源之前,先绑定下拉列表列的数据源。
如此⼀来,⽤户编辑该列时,可以下拉选择可选项。
2var column = this.dgvList.Columns["cname"] as DataGridViewComboBoxColumn;//注意:表格列名 = 数据库列名 = 实体类属性名。
推荐这样的命名⽅式。
必须将列显式转为⼦类型。
3if (column != null)4 {5 column.DisplayMember = "cname"; //显⽰值。
即绑定实体对象的属性名。
6 column.ValueMember = "cid";//实际值有更⾼的优先级,如果同时指定了这两项属性,那么真正的对应字段是ValueMember.以后拿出来进⾏匹配的就是cid值。
与之匹配的也必须是对应类型和意义的字段或者属性名称7 column.DataSource = cm.GetAllClassesList(false);//BLL层通过DAL层获取实体对象集合——“班级表”的查询结果集8 column.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;//⾮编辑时,不显⽰下拉按钮9 }1011this.dgvList.DataSource = pm.GetAllPersonList(false);//DataGridView绑定数据源(BLL层从DAL层获取的实体对象集合)注意:ValueMember指定属性的数据类型必须与该列的绑定数据源属性的数据类型⼀致。
一、前言MVC三层架构是一种常用的软件开发模式,能够将业务逻辑、数据处理和用户界面分离,提高软件的可维护性和可扩展性。
本文将以一个简单的增删改查实例为例,介绍MVC 三层架构的基本概念和实现方法。
二、实例介绍我们假设有一个学生信息管理系统,需要实现以下功能:1. 显示所有学生信息2. 添加新的学生信息3. 修改已有的学生信息4. 删除指定的学生信息其中,学生信息包括学号、姓名、性别、年龄等基本信息。
三、MVC三层架构介绍MVC三层架构将软件分为三层,分别是模型层(Model)、视图层(View)和控制层(Co ntroller)。
1. 模型层:负责数据的处理和业务逻辑的实现,通常包括数据库访问、数据处理和业务逻辑等。
2. 视图层:负责用户界面的显示和用户交互的实现,通常包括HTML页面、CSS样式和Java Script脚本等。
3. 控制层:负责模型层和视图层之间的协调和控制,通常包括URL路由、请求处理和响应生成等。
四、实现步骤1. 数据库设计我们首先需要设计一个学生信息表,包括学号、姓名、性别、年龄等字段。
可以使用MyS QL或其他关系型数据库进行设计和实现。
2. 模型层实现我们使用Java语言实现模型层,包括数据访问和业务逻辑的实现。
可以使用JDBC或ORM 框架(如Hibernate、MyBatis等)进行数据库访问和操作。
3. 视图层实现我们使用HTML、CSS和JavaScript等技术实现视图层,包括学生信息的显示、添加、修改和删除等功能。
可以使用jQuery等JavaScript库进行开发。
4. 控制层实现我们使用Java语言实现控制层,包括URL路由、请求处理和响应生成等功能。
可以使用Ser vlet、Spring MVC等框架进行开发。
五、实现细节1. 数据库连接池的使用为了提高数据库访问的效率和稳定性,我们可以使用数据库连接池技术,避免频繁地打开和关闭数据库连接。
2. 事务管理的实现为了保证数据的一致性和完整性,我们需要使用事务管理技术,将一系列数据库操作作为一个整体进行提交或回滚。
/blog/article.asp?id=585/liping13599168/archive/2007/12/16/996526.ht ml<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewUp.aspx.cs" Inherits="gridview_GridViewUp" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title>ÎÞ±êÌâÒ³</title></head><body><form id="form1" runat="server"><div><table cellpadding="0" cellspacing="0" border="0" width="80%" style="font-size: 11px"><tr><td align="center"><asp:GridView ID="GridView1" runat="server" Width="100%" CellPadding="4" ForeColor="#333333"AutoGenerateColumns="False"AllowPaging="True" PageSize="12" OnRowCancelingEdit="GridView1_RowCancelingEdit"OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating"OnRowDeleting="GridView1_RowDeleting"DataKeyNames="id,name"OnPageIndexChanging="GridView1_PageIndexChanging"DataMember="card,price" OnRowDataBound="GridView1_RowDataBound" GridLines="None"><Columns><asp:BoundField HeaderText="Éí·ÝÖ¤ºÅ" DataField="card" Visible=false /><asp:BoundField HeaderText="±àºÅ" DataField="id" ReadOnly="True" /><asp:BoundField DataField="name" HeaderText="ÐÕÃû" ReadOnly="True" /><asp:TemplateFieldHeaderText="Éí·ÝÖ¤ºÅ"><ItemTemplate><%# Eval("card") %></ItemTemplate><EditItemTemplate><asp:TextBox ID="TBCard" Text='<%# Eval("card") %>' runat="server" Width="140px" /></EditItemTemplate><ItemStyle Width="150px" /></asp:TemplateField><asp:TemplateField HeaderText="ѧÀú"><ItemTemplate><%# Eval("description")%></ItemTemplate><EditItemTemplate><asp:HiddenField ID="HDFXueli" runat="server" Value='<%# Eval("xueli") %>' /><asp:DropDownList ID="DDLXueli" runat="server" Width="90px" /></EditItemTemplate><ItemStyle Width="100px" /></asp:TemplateField><asp:TemplateField HeaderText="¼Û¸ñ"><ItemTemplate><%# Eval("price") %></ItemTemplate><EditItemTemplate><asp:TextBox ID="TBPrice" Text='<%# Eval("price") %>' runat="server" Width="90px" /></EditItemTemplate><ItemStyle Width="100px" /></asp:TemplateField><asp:BoundField HeaderText="½¨Á¢Ê±¼ä" DataField="createdate" ReadOnly="True" /><asp:CommandFieldShowDeleteButton="True" ShowEditButton="True" HeaderText="²Ù×÷" /> </Columns><PagerSettings FirstPageText="" LastPageText="" NextPageText="" PreviousPageText="" /><RowStyle Height="20px" BackColor="#F7F6F3" ForeColor="#333333" /><FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /><EditRowStyle BackColor="#999999" /><SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /><PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /><HeaderStyle BackColor="#5D7B9D"Font-Bold="True" ForeColor="White" /><AlternatingRowStyle BackColor="White" ForeColor="#284775" /></asp:GridView></td></tr></table></div></form></body></html>GridViewUp.aspx.csÎļþ´úÂ룺using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class gridview_GridViewUp : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){GridViewBind();}}protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e){GridView1.PageIndex = e.NewPageIndex;GridViewBind();}private void GridViewBind(){string connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionStr ing;string SqlStr = "Select a.*,b.description FROM test01 a,xueli b where a.xueli=b.code and a.id<1000 and a.id>200";DataSet ds = new DataSet();try{SqlConnection conn = new SqlConnection(connStr);if (conn.State.ToString() == "Closed") conn.Open();SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);da.Fill(ds, "test01");if (conn.State.ToString() == "Open") conn.Close();GridView1.DataSource = ds.Tables[0].DefaultView;GridView1.DataBind();}catch (Exception ex){Response.Write("Êý¾Ý¿â´íÎ󣬴íÎóÔ-Òò£º" + ex.Message);Response.End();}}protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (((DropDownList)e.Row.FindControl("DDLXueli")) != null){DropDownList ddlxueli = (DropDownList)e.Row.FindControl("DDLXueli");// Éú³É DropDownList µÄÖµ£¬°ó¶¨Êý¾Ýstring connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionStr ing;string SqlStr = "Select * from xueli";DataSet ds = new DataSet();SqlConnection conn = new SqlConnection(connStr);if (conn.State.ToString() == "Closed") conn.Open();SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);da.Fill(ds, "xueli");if (conn.State.ToString() == "Open") conn.Close();ddlxueli.DataSource = ds.Tables[0].DefaultView;ddlxueli.DataTextField = "description";ddlxueli.DataValueField = "code";ddlxueli.DataBind();//// Ñ¡ÖÐ DropDownListddlxueli.SelectedValue = ((HiddenField)e.Row.FindControl("HDFXueli")).Value;//}}protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e){GridView1.EditIndex = e.NewEditIndex;GridViewBind();}protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e){GridView1.EditIndex = -1;GridViewBind();}protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e){string id = GridView1.DataKeys[e.RowIndex].Values[0].ToString();string card = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TBCard")).Text; string xueli = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("DDLXueli")) .SelectedValue;string price = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TBPrice")).Text;string connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionStr ing;。
三层架构步骤讲解前言:与ASP相比在Web应用开发上无疑更容易,更有效率。
Web开发大部分还是围绕着数据操作,建立数据库存储数据,编写代码访问和修改数据,设计界面采集和呈现数据。
走过学习入门阶段后,真正开始着手开发一个Web项目时,才发现错综复杂的数据与关联根本就不是SqlDataSource和AccessDataSource数据源控件能简单解决的,而恰恰是被忽视了的一个ObjectDataSource数据源控件才是真正踏入开发门槛的关键,由此也对三层架构模式有了初步体验。
一.三层架构介绍设计模式中的分层架构(可以参考一下J2EE中MVC模式)实现了各司其职,互不干涉,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
这样就能更好的实现开发中的分工,有利于组件的重用。
所以这些年关于模式的研究有很多成果,应用也很广泛。
一个好的模式在程序开发和后期维护中作用重大。
三层架构自底向上分为:数据访问层(DAL),业务逻辑层(BLL)和表示层(PL)。
数据访问层(DAL):使用了一个强类型的DataSet作为数据访问层,只是单纯的对数据进行增,删,改,查询和判断存在等等较通用的数据访问方法(由SQL语句来提供),不应该有“事务”存在。
业务逻辑层(BLL):业务逻辑层是在数据访问层和表示层之间进行数据交换的桥梁,按业务需求调用数据访问层中的方法组合,集合了各种业务规则到一个BLL中,例如通过条件进行判断的数据操作或“事务”处理。
BLL都是以类库(Class Library)的形式来实现的。
表示层(PL):表示层是为客户提供用于交互的应用服务图形界面,帮助用户理解和高效地定位应用服务,呈现业务逻辑层中传递的数据,用页面来实现。
二.三层架构应用实现随着 的不断升级,可以很方便的使用 来构建B/S 三层架构的应用程序,下面以“教师业务信息管理系统”项目中的部分例子来演示如何使用 2.0 和SQL Server 2005数据库来构建一个三层架构的应用程序。
winform datagridview控件用法Winform DataGridView 控件用法详解一、简介Winform DataGridView 控件是 .NET Framework 中提供的一个强大的数据显示和编辑控件。
它可以显示和编辑多种类型的数据(如文本、数字、日期、图像等),并且提供了丰富的功能和灵活的样式设置,可以方便地实现数据的展示、排序、筛选、编辑、分页等操作。
二、绑定数据源1. 绑定数据集可以通过设置DataGridView 的DataSource 属性来绑定一个数据集(DataSet)或数据表(DataTable)。
在Visual Studio 的设计器中,通过选择数据源和数据成员来实现绑定,也可以通过代码实现。
例如:dataGridView1.DataSource = dataSet.Tables["TableName"];2. 绑定数据集合除了绑定数据集,还可以绑定数据集合(如List<T>、BindingList<T> 等)。
在数据集合发生变化时,DataGridView 会自动更新显示的数据。
例如:List<User> userList = new List<User>();dataGridView1.DataSource = userList;3. 动态绑定数据绑定数据源后,可以通过设置DataGridView 的AutoGenerateColumns 属性为true,自动根据数据源的结构创建列。
也可以通过手动添加列来控制显示的列数和顺序。
例如:dataGridView1.AutoGenerateColumns = true;三、设置列样式1. 自动调整列宽可以通过设置DataGridView 的AutoSizeColumnsMode 属性来调整列宽。
通常选择AllCells 或Fill,前者会根据列中的内容调整列宽,后者会填充整个控件。