《 ASPNET数据库网站设计教程(C#版)》 配套教学资源 第9章数据绑定与数据绑 定控件 9.6~97 本章内容:数据绑定, GridView控件, Details view控件, Form View控件,使用数据 绑定表达式实现数据绑定,调用 Databindo方法实现数据绑定。 本章重点: GridView控件, Details View控件,rormⅤiew控件 圖王出妖社
第9章 数据绑定与数据绑 定控件 9.6~9.7 《ASP.NET数据库网站设计教程(C#版)》 配套教学资源 本章内容:数据绑定,GridView控件,Details View控件,FormView控件,使用数据 绑定表达式实现数据绑定,调用DataBind()方法实现数据绑定。 本章重点:GridView控件,DetailsView控件,FormView控件
96 Details View控件 Details View控件的语法 Details View控件的基本语法格式如下: a asp: BoundField DataField="字段名 Headertext="列标题" ReadOnly="true" SortExpression="排序表达式"/> //其他字段 ■ a
◼ 1. DetailsView控件的语法 ◼ DetailsView控件的基本语法格式如下: ◼ ◼ ◼ ◼ … //其他字段 ◼ ◼ 9.6 DetailsView控件
Details view控件的许多属性与GridⅤiew控件相似,不同的 是, Details View控件内置了添加记录功能,每次只能显示 条记录。 Details view控件的常用属性见表9-10。 表9-10 Details view控件的常用属性 属性 说明 AllowPaging 获取或设置一个值,该值指示是否启用分页功能 获取或设置一个值,该值指示对应于数据源中每个字段的行字段是否自动生成并在 Details View Auto Generaterows 控件中显示 AutoGenerateDeleteButton获取或设置一个值,该值指示用来删除当前记录的内置控件是否在 Details View控件中显示 Auto GenerateEditButton获取或设置一个值,该值指示用来编辑当前记录的内置控件是否在 Details view件中显示 AutoGenerateInsert Button获取或设置一个值,该值指示用来插入新记录的内置控件是否在 Details View控件中显示 DataKey 获取一个 DataKey对象,该对象表示所显示的记录的主键 HeaderText 获取或设置要在 Details View控件的标题行中显示的文本 Controls 获取复合数据绑定控件内的子控件的集合 Default Mode属性可以控制默认的显示模式,有3个可选值: Details ViewMode Readonly:只读模式,这是默认的显示模式 DefaultMode Details View Mode. Edit:编辑模式,用户可以更新记录的值; Details View Mode Insert:插入模式,用户可以向数据源中添加新记录
◼ DetailsView控件的许多属性与GridView控件相似,不同的 是,DetailsView控件内置了添加记录功能,每次只能显示 一条记录。DetailsView控件的常用属性见表9-10
Details view控件的常用事件见表9-11。 表9-11 DetailsView控件的常用事件 说明 ItemDeleting 在单击 Details View控件中的“删除”按钮时,但在删除操作之前发生 ItemInserting 在单击 Details view控件中的“插入”按钮时,但在插入操作之前发生 ItemUpdating 在单击 Details View控件中的“更新”按钮时,但在更新操作之前发生 Mode Changing当Dew控件尝试在编、插入和只读模式之间更改时,但在更新CmMd)属性之前发生 PageIndex Changing当 PageIndex属性的值在分页操作前更改时发生 ■ DetailsⅤiew支持大量可以自定义控件不同状态下外观的模 板。例如,、和 元素定义控件上部和下部的外观。另外, 还有一个元素,用来定义在控件中出现的行,与 Gridview的元素很相似
◼ DetailsView控件的常用事件见表9-11。 ◼ DetailsView支持大量可以自定义控件不同状态下外观的模 板。例如,、和 元素定义控件上部和下部的外观。另外, 还有一个元素,用来定义在控件中出现的行,与 GridView的元素很相似
2. Details View控件的应用实例 【演练916】使用 Details view控件,对 UserManagement数 据库的 uSeriNfo表实现分页、编辑、插入、删除记录功能 复制演练9-13创建的网站文件夹ex913,改为ex916,或 者直接打开演练913创建的网站文件夹ex913 (1)分页显示记录 ■①添加Web窗体 Default_ Details View. aspx,添加 Details view 控件。 ■②在 Details view控件的右上角单击按钮,在任务面板中单 击“编辑字段”,如图9-51所示。显示“字段”对话框 选中取消“自动生成字段”复选框,分别添加下面字段及 属性(设置后显示如图9-52)
◼ 2. DetailsView控件的应用实例 ◼ 【演练9-16】 使用DetailsView控件,对UserManagement数 据库的UserInfo表实现分页、编辑、插入、删除记录功能 。 ◼ 复制演练9-13创建的网站文件夹ex9_13,改为ex9_16,或 者直接打开演练9-13创建的网站文件夹ex9_13。 ◼ (1)分页显示记录 ◼ ① 添加Web窗体Default_DetailsView.aspx,添加DetailsView 控件。 ◼ ② 在DetailsView控件的右上角单击 按钮,在任务面板中单 击“编辑字段”,如图9-51所示。显示“字段”对话框, 选中取消“自动生成字段”复选框,分别添加下面字段及 属性(设置后显示如图9-52):
asp: Image Field DatalmageUrlField="UserPhoto DatalmageUrlFormatString=Images\ Photos\)"Header Text= 头像 /asp: Image Field> asp: CheckBoxField DataField=" IpAss" Headertext="用户状态"/> /Fields a
◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼ ◼
fault Detailsview.aspx Column Colum 用户名数据绑定 密码数据绑定 Column 博客地址数据定 编字段一 用户状态F 加新字段一 偏细模 设计口拆分|出源|‘ p: DetailsviewaDetai- 日设计探分|回源8…pc 图9-51添加 Details View控件 图952设置完成后的 Details View
③在 Details View1控件的属性窗口中,设置 Allow Paging为 true 添加 Details view1控件的 Pagelndex changing事件,代码如下 a protected void Details View1_PageIndex Changinglobject sender, Details View EventArgs e) //分页操作 Details View1. PageIndex =e. NewPageIndex; show allusersi0;//绑定控件
◼ ③ 在DetailsView1控件的属性窗口中,设置AllowPaging为 true。 ◼ 添加DetailsView1控件的PageIndexChanging事件,代码如下 : ◼ protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e) ◼ { //分页操作 ◼ DetailsView1.PageIndex = e.NewPageIndex; ◼ showAllUsers();//绑定控件 ◼ }
添加绑定控件方法 sshow AllUsers0,代码如下 public void show AllUserso SqlConnection conn new SqlConnection(ConfigurationManager Connection Strings["ConnStr" ConnectionStrin String sqlString ="select* from UserInfo order by UserID desc conn Open; SqlData Adapter adapter new SqlData Adapter(sqlString, conn) Data Table table = new DataTable dapter Fill(table) Details View 1. DataKeyNames= new string{" UserID"};//删除等操作用 Details View 1. DataSource= table. Details View 1. DataBindo conn. close
◼ 添加绑定控件方法showAllUsers(),代码如下: ◼ public void showAllUsers() ◼ { ◼ SqlConnection conn = ◼ new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionStrin g); ◼ String sqlString = "select * from UserInfo order by UserID desc"; ◼ conn.Open(); ◼ SqlDataAdapter adapter = new SqlDataAdapter(sqlString, conn); ◼ DataTable table = new DataTable(); ◼ adapter.Fill(table); ◼ DetailsView1.DataKeyNames = new string[] { "UserID" };//删除等操作用 ◼ DetailsView1.DataSource = table; ◼ DetailsView1.DataBind(); ◼ conn.Close(); ◼ }
添加Page的Ioad事件,代码如下 protected void Page_ load(object sender, EventArgs e) if (Page IsPostBack showAllUserso ④执行 Default_ Details View. aspx,显示如图9-53所示。如果 第1列太窄,可在设计视图中把 Details view控件适当拉宽
◼ 添加Page的Load事件,代码如下: ◼ protected void Page_Load(object sender, EventArgs e) ◼ { ◼ if (!Page.IsPostBack) ◼ { ◼ showAllUsers(); ◼ } ◼ } ◼ ④ 执行Default_DetailsView.aspx,显示如图9-53所示。如果 第1列太窄,可在设计视图中把DetailsView控件适当拉宽