关于DataGrid Web控件的热门问题

datagrid|web|控件|问题

文章译自在工作过程中遇到的实际问题,而查的MSDN,当时没有找到中文资料,网上关于此方面的实用的资料也不多,有心收集下来并翻译,在此与大家交流,欢迎批评指正:zyfly0808@hotmail.com

内容——

序言:Windows窗体&Web窗体中的DataGrid控件

①.控制列的宽度、高度和对齐方式。

②.制定列的显示和编辑模式外观。

③.格式化日期、货币和其它数据。

④.动态显示和隐藏列。

⑤.动态增加列。

⑥.用DataGrid控件向数据源添加一条记录。

⑦.在编辑模式下显示一个下拉列表。

⑧.用CheckBox选择多个Items.

⑨.一次编辑多行。

⑩.单击任何地方选中该行。

简介

DataGrid服务器控制是从数据源显示信息的强有力的工具,使用简单。你可以只通过设定一些属性就可以显示可编辑的数据,并且使其具有专业的外观,同时,它还具有非常复杂的对象模型,为你展示数据提供了很大的灵活性。

这篇文章重点讲解了在NewsGroup网络和其它的开发人员的论坛里经常问到的关于制定DataGrid的显示的问题。这里所讨论的有些问题是很简单的,但有时也有些令人迷惑,在这种情况下,他们提出了这一问题——如何掌握DataGrid控件的基本功能。

文章假设你已经熟悉该控件——怎样将它添加到一个窗体以及如何设置它来显示数据。你还要知道怎样将它的一行变成可编辑模式和其它的基本任务。最终,你将会发现掌握如何使用模板——向DataGrid中添加模板列以及在模板中展示控件——是十分有帮助的。

序言:Windows窗体&Web窗体中的DataGrid控件。

Web窗体中的DataGrid控件并不是Windows窗体中该控件的等价物,通常认为它们是同一种控件,至少具有相同的功能。但是,Web窗体的整个编程Paradigm和Windows窗体有着很大的不同,举个例子来说,Web窗体页面的每一次处理过程都要回传到服务器,它们必须维护状态,而且具有非常不同的数据绑定模型,如此等等。

正是由于这些不同,使得它们在各自的控件方面也有着很大的差异,包括
DataGrid控件,一般来说,Web窗体DataGrid控件的内置属性要少一些,下面列出了几个不同之处:
①.不继承支持主——从数据结构。

②.和其它Web服务器控件一样,它不支持双向的数据绑定。如果你想更新数据,必须要自己写代码。

③.一次只能编辑一行。

④.并不继承性也支持排序,尽管你可以通过处理它激发的事件来对网格的内容排序。

另一方面:

①.你可以将Web窗体DataGrid控件绑定到任何支持IEnumerable接口的对象上。

②.Web窗体DataGrid控件支持分页。

③.与Windows窗体DataGrid相比,我们更容易规范Web窗体DataGrid的外观和数据的输出。

一.控制列宽度、高度和对齐公式。

默认情况下,DataGrid控件自动调整行和列,使它们适应你指定给它的全部

的高度和宽度。在全部宽度内,它根据列头的文本来控制列的宽度。所有数据默

认都是左对齐的。

为控制列的特性,应该关闭“自动生成列”属性——将AutoGenerateColumns属性置为False.在实际的使用中,只有在短期应用,如快速浏览页面或者演示的时候,才将该属性设为True.对于生成应用程序而言,你应该默认添加列,每个列可以是绑定列或者模板列。

为了控制某个列的宽度,可以为该列产生一个样式元素(style-element)然后
将元素的宽度属性设为标准单位,下面给出了一个项样式的width属性设置
的HTML代码:
将元素的宽度属性设为标准单位,下面给出了一个项样式的width属性设置
的HTML代码:

<asp: BoundColumn DataField=”title”SortExpression=”title”

<asp: BoundColumn DataField=”title”SortExpression=”title”

Header Text=”Title”>

<ItemStyle Width=”100px”></ItemStyle>

</asp:BoundColumn>

注:可以将ItemStyle-Width=”100px”写入Boundolumn中。

你可以使用样式元素设置对齐方式,将其设为“左”、“右”或者其它在“水平对齐”集合中定义的值(在VS中,每个单独的列对齐方式是可见的)

下面是一个例子:

<asp: BoundColumn DataField=”title” SortExpression=”title”

HeaderText=”Title”>

<ItemStyle Width=”100px”HorizontalAlign=”Right”></ItemStyle>

</asp:BoundColumn>

你还可以使用样式元素设定列的高度,你很可能会觉得这没有设定宽度灵活,因为设定某一列的高度也就设定了全部列的高度。

你也可以在运行时通过代码设定宽度,采取这种方式的一个例子就是ItemGreated事件句柄,下面的例子将前两列分别设定为100和50像素。

//C#

Private void DataGrid-ItemCreated(object sender,

System.Web.UI.WebControls.DataGridItemEventArgs e)

{

e.Item.Cells[0]Width=new Unit(100);

e.Item.Cells[1].Width=new Unit(50);

}

当然,将这些可以在设计时就设置好的宽度值通过代码来设置几乎没有任何意义。一般情况下,你可能只是想要基于运行时的值来设定宽度而采取这种方法,你可以将单元格控件的宽度设为标准的单位(往往是像素)。但是,它并不直接将这些长度数据转化为像素——这些仅仅是字符数。然而,当你创建一个项的时候,可以使用这些数据来检查。

(unfinished)

③.与Windows窗体DataGrid相比,我们更容易规范Web窗体DataGrid的外观和数据的输出。

一.控制列宽度、高度和对齐公式。

默认情况下,DataGrid控件自动调整行和列,使它们适应你指定给它的全部

的高度和宽度。在全部宽度内,它根据列头的文本来控制列的宽度。所有数据默

认都是左对齐的。

为控制列的特性,应该关闭“自动生成列”属性——将AutoGenerateColumns属性置为False.在实际的使用中,只有在短期应用,如快速浏览页面或者演示的时候,才将该属性设为True.对于生成应用程序而言,你应该默认添加列,每个列可以是绑定列或者模板列。

为了控制某个列的宽度,可以为该列产生一个样式元素(style-element)然后
将元素的宽度属性设为标准单位,下面给出了一个项样式的width属性设置
的HTML代码:
将元素的宽度属性设为标准单位,下面给出了一个项样式的width属性设置
的HTML代码:

<asp: BoundColumn DataField=”title”SortExpression=”title”

<asp: BoundColumn DataField=”title”SortExpression=”title”

Header Text=”Title”>

<ItemStyle Width=”100px”></ItemStyle>

</asp:BoundColumn>

注:可以将ItemStyle-Width=”100px”写入Boundolumn中。

你可以使用样式元素设置对齐方式,将其设为“左”、“右”或者其它在“水平对齐”集合中定义的值(在VS中,每个单独的列对齐方式是可见的)

下面是一个例子:

<asp: BoundColumn DataField=”title” SortExpression=”title”

HeaderText=”Title”>

<ItemStyle Width=”100px”HorizontalAlign=”Right”></ItemStyle>

</asp:BoundColumn>

你还可以使用样式元素设定列的高度,你很可能会觉得这没有设定宽度灵活,因为设定某一列的高度也就设定了全部列的高度。

你也可以在运行时通过代码设定宽度,采取这种方式的一个例子就是ItemGreated事件句柄,下面的例子将前两列分别设定为100和50像素。

//C#

Private void DataGrid-ItemCreated(object sender,

System.Web.UI.WebControls.DataGridItemEventArgs e)

{

e.Item.Cells[0]Width=new Unit(100);

e.Item.Cells[1].Width=new Unit(50);

}

当然,将这些可以在设计时就设置好的宽度值通过代码来设置几乎没有任何意义。一般情况下,你可能只是想要基于运行时的值来设定宽度而采取这种方法,你可以将单元格控件的宽度设为标准的单位(往往是像素)。但是,它并不直接将这些长度数据转化为像素——这些仅仅是字符数。然而,当你创建一个项的时候,可以使用这些数据来检查。

(unfinished)

③.与Windows窗体DataGrid相比,我们更容易规范Web窗体DataGrid的外观和数据的输出。

一.控制列宽度、高度和对齐公式。

默认情况下,DataGrid控件自动调整行和列,使它们适应你指定给它的全部

的高度和宽度。在全部宽度内,它根据列头的文本来控制列的宽度。所有数据默

认都是左对齐的。

为控制列的特性,应该关闭“自动生成列”属性——将AutoGenerateColumns属性置为False.在实际的使用中,只有在短期应用,如快速浏览页面或者演示的时候,才将该属性设为True.对于生成应用程序而言,你应该默认添加列,每个列可以是绑定列或者模板列。

为了控制某个列的宽度,可以为该列产生一个样式元素(style-element)然后
将元素的宽度属性设为标准单位,下面给出了一个项样式的width属性设置
的HTML代码:
将元素的宽度属性设为标准单位,下面给出了一个项样式的width属性设置
的HTML代码:

<asp: BoundColumn DataField=”title”SortExpression=”title”

<asp: BoundColumn DataField=”title”SortExpression=”title”

Header Text=”Title”>

<ItemStyle Width=”100px”></ItemStyle>

</asp:BoundColumn>

注:可以将ItemStyle-Width=”100px”写入Boundolumn中。

你可以使用样式元素设置对齐方式,将其设为“左”、“右”或者其它在“水平对齐”集合中定义的值(在VS中,每个单独的列对齐方式是可见的)

下面是一个例子:

<asp: BoundColumn DataField=”title” SortExpression=”title”

HeaderText=”Title”>

<ItemStyle Width=”100px”HorizontalAlign=”Right”></ItemStyle>

</asp:BoundColumn>

你还可以使用样式元素设定列的高度,你很可能会觉得这没有设定宽度灵活,因为设定某一列的高度也就设定了全部列的高度。

你也可以在运行时通过代码设定宽度,采取这种方式的一个例子就是ItemGreated事件句柄,下面的例子将前两列分别设定为100和50像素。

//C#

Private void DataGrid-ItemCreated(object sender,

System.Web.UI.WebControls.DataGridItemEventArgs e)

{

e.Item.Cells[0]Width=new Unit(100);

e.Item.Cells[1].Width=new Unit(50);

}

当然,将这些可以在设计时就设置好的宽度值通过代码来设置几乎没有任何意义。一般情况下,你可能只是想要基于运行时的值来设定宽度而采取这种方法,你可以将单元格控件的宽度设为标准的单位(往往是像素)。但是,它并不直接将这些长度数据转化为像素——这些仅仅是字符数。然而,当你创建一个项的时候,可以使用这些数据来检查。

(unfinished)

时间: 2025-01-30 10:51:56

关于DataGrid Web控件的热门问题的相关文章

DataGrid Web控件深度历险(2) Part1

datagrid|web|控件 导言 在第一部分我们研究了DataGrid的基本功能,它可在HTML表格中显示数据.在第一部分我么说明了将数据库内容绑定至DataGrid是非常简单的,我们所要做的就是通过SQL查询来生成一个DataReader对象,将DataGrid的DataSource属性设为这个DataReader对象,然后调用DataGrid对象的DataBind()方法.剩下的事情就是将DataGrid放置到HTML中,它可通过如下代码实现: <asp:datagrid runat=&qu

DataGrid Web控件深度历险(2) Part2

datagrid|web|控件 在本文的第一部分,我们研究了如何设定DataGrid Web控件的显示属性以及如何通过样式设定DataGrid的页眉.页脚.行和交替行的显示.所有这些技术或是用于设定整个DataGrid的显示,或是用于设定DataGrid中行的显示.但是如何设定DataGrid中列的显示属性?其实并不难,接着读你就知道了. 设定哪些列应该显示 缺省情况下DataGrid在生成的HTML表格中为SQL查询返回的每一列生成一个对应的列.但是在一些情况下仅希望在DataGrid中显示这

DataGrid Web控件深度历险(3) part1

datagrid|web|控件 这篇文章是一系列关于使用DataGrid Web控件文章的第三篇.ASP.Net DataGrid Web控件可将数据库信息显示在HTML表格中,并且功能强大.在第一篇文章中我们讨论了DataGrid的基本功能:在第二篇文章中我们讨论了设定DataGrid显示属性的信息.本文将研究如何将事件与DataGrid联系起来. 导言 在第一篇文章中我们研究了DataGrid的基本功能 (它是一个被设计用于在HTML表格标签中显示数据的ASP.Net Web控件),展示了通

DataGrid Web控件深度历险(3) part2

datagrid|web|控件 点击按钮时让一些事情发生 现在已将按钮添加到DataGrid中了,我们希望将服务器端的代码与按钮关联起来,这样当按钮被点击时可发生一些动作.在认识到DataGrid中的ButtonColumn按钮被点击时ItemCommand事件将被触发后,那么我们就可为这个事件编写服务器端的事件处理程序.这个事件处理程序必须定义如下: Sub eventHandlerName(sender as Object, e as DataGridCommandEventArgs) ..

DataGrid Web控件深度历险(3) part3

datagrid|web|控件 在本文第二部分我们研究了如何通过ButtonColumn标记在DataGrid中显示按钮.此外,我们考察了如何将事件处理程序与按钮的点击联系起来.下面我们将了解到如何判断DataGrid中哪一行的按钮被点击并且基于这些信息执行相应的动作. 判断哪一行的按钮被点击 回想一下点击按钮的事件处理程序定义如下: Sub eventHandlerName(sender as Object, e as DataGridCommandEventArgs) ...End Sub

DataGrid Web控件深度历险(1)

datagrid|web|控件 DataGrid Web控件深度历险(1) 这篇文章是一系列关于使用DataGrid Web控件文章的第一部分.ASP.Net DataGrid Web控件可将数据库信息显示在HTML表格中,并且功能强大.在最简单的情形下DataGrid显示HTML表格框架,但是它可被增强以显示丰富的用户界面,可根据数据库的列进行排序,甚至允许对数据库结果进行分页!所有这些有趣的主题将在今后一系列文章中涉及. 从数据库中获取表格信息并将其显示在一个HTML表格中是传统ASP编程中

探讨ASP.NET 2.0的Web控件改进之概述

asp.net|web|控件 一. 引言 到目前为止,你可能已经了解了大量的ASP.NET 2.0新特征-母版页面,主题,提供者,等等--所有这样内容都相当精彩:但是,你是否了解到有关定制Web控件开发方面的重大变化?这正是我在本文中所想讨论的.如果你已经从事于控件开发,那么,我想本文所描述的ASP.NET 2.0中的新的改进特征会立即应用于你的控件开发中. 首先应该注意的是,你以前使用ASP.NET 1.1(或1.0)开发的所有Web控件在2.0版本下将继续良好运行-微软并没有破坏你的现有代码

探讨ASP.NET 2.0中的Web控件改进技术

asp.net|web|控件 ASP.NET 2.0并没有抛弃1.1版本中的任何现有控件,而是增加了一组新的控件;同时还引入了若干新的控件开发技术.本系列文章将对这些内容展开全面探讨. 一. 引言 到目前为止,你可能已经了解了大量的ASP.NET 2.0新特征-母版页面,主题,提供者,等等--所有这样内容都相当精彩;但是,你是否了解到有关定制Web控件开发方面的重大变化?这正是我在本文中所想讨论的.如果你已经从事于控件开发,那么,我想本文所描述的ASP.NET 2.0中的新的改进特征会立即应用于

亲密接触ASP.Net(4) WEB控件

WEB控件按照计划我们这一节要谈Web控件,我想了半天也不知道如何定义这个web控件,它比html控件难于理解,毕竟HTML太像原来我们熟悉的东东了.而web控件确与我们平常见到的有很大的出入,不知道大家还记不记得我说过的一句话,那就是ASP.net的程序就像是写VBVC中的窗口,先再这些窗口中加入我们的需要的控件,然后再对这些控件进行操作.如果你学过一点点VBVC的编程,那么理解这个就不难了,ASP.net中的web控件就像是VBVC中的控件一样.我们先在页面中摆好这些控件,然后再通过Page