ASP.NET DataGrid的样式
成都创新互联公司"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!成都创新互联公司具备承接各种类型的网站建设、网站设计项目的能力。经过十多年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。
ASP.NET DataGrid 允许您修改成分单元格的样式和布局,这可通过挂钩 ItemCreated 事件来完成。该控件每次处理子项(页眉、页脚、行、页导航)时,该事件都会被激发。事件处理程序接收类型为 DataGridItemEventArgs 的参数,您可以从该参数提取所处理项目的类型。
汇总行是 DataGrid 行,同样,它的类型可以是 Item 或 AlternatingItem。因此,在编写 ItemCreated 处理程序时,要确保只有在该项的类型正确时才处理相应的单元格。下面的列表概述所需的代码。
- public void ItemCreated(Object sender, DataGridItemEventArgs e)
- {
- // Get the type of the newly created item
- ListItemType itemType = e.Item.ItemType;
- if (itemType == ListItemType.Item ||
- itemType == ListItemType.AlternatingItem)
- {
- // Get the data bound to the current row
- DataRowView drv = (DataRowView) e.Item.DataItem;
- if (drv != null)
- {
- // Check here the app-specific way to detect whether the
- // current row is a summary row
- :
- }
- }
- }
如果所创建的项是 DataGrid 项(或交替项),则可以通过 DataItem 属性访问绑定到行的数据。根据 DataGrid 绑定到的对象的类型,DataItem 属性会指向不同的行对象。如果网格绑定到 DataView,会获取 DataRowView 对象;如果该源用 DataTable 对象来表示,会获取 DataRow 对象。在该示例应用程序中,我使用 DataView 对象填充了网格。后来,单行的数据对象成为 DataRowView 对象。
在拥有了数据行对象之后,可以应用一些应用程序特定的规则来确定该行是否为汇总行。在该示例应用程序中,汇总行的 MyOrderID 字段设置为 –1。
- if ((int) drv["MyOrderID"] == -1)
- {
- // Modify style and layout here.
- // --> Set the background color to white and use bold font
- e.Item.BackColor = Color.White;
- e.Item.Font.Bold = true;
- }
DataGrid 现在看上去如下图所示。
DataGrid的样式:以粗体显示且背景为白色的汇总行
DataGrid 行实际上只是表中的一行。同样,使用它可以很好地进行单元格删除以及其他调整。让我们看一看如何使用跨越所有现有列的单一单元格来呈现汇总行。
- if ((int) drv["MyOrderID"] == -1)
DataGrid的样式:具有自定义布局的汇总行
在这三个原始单元格中,前两个被删除,第三个(现在包含索引 0)被正确对齐并跨越外部表的宽度。如果您希望在汇总行上显示一些自定义文本,则需要做好面对其他问题的准备。
假设您需要添加一些文本以对小计进行注释,而且与此同时,让小计与单个定单量出现在同一列中。在这种情况下,只需删除一个单元格。
- e.Item.Cells.RemoveAt(1); // remove the order # cell
- e.Item.Cells[0].ColumnSpan = 2; // span the custID cell
- e.Item.Cells[1].HorizontalAlign = HorizontalAlign.Right;
- e.Item.Cells[0].Text = "Total is";
此代码的结果如下所示。正如您所看到的那样,它与您的预期结果不完全相同。汇总行的第一个单元格中并没有您刚刚设置的文本。这是怎么回事呢?
DataGrid的样式:具有修改后的自定义布局的汇总行
此处需要考虑的重要一点是,Item 和 AlternatingItem 行均为绑定行。它们的明确文本只是在 OnItemDataBound 事件的过程中设置。您可能已经猜到了,OnItemDataBound 事件会在创建该项之后激发。因此,在处理 ItemCreated 时分配给单元格的任何文本在后来都由某个事件以静默方式改写。可通过设置 DataGrid 的 OnItemDataBound 属性来挂钩 OnItemDataBound 事件。
- < asp:DataGrid id="grid" runat="server"
- AutoGenerateColumns="false"
- :
- OnItemCreated="ItemCreated"
- OnItemDataBound="ItemDataBound"
- OnPageIndexChanged="PageIndexChanged">
- The structure of the code for
- ItemDataBound is shown below.
- public void ItemDataBound(Object sender, DataGridItemEventArgs e)
- {
- DataRowView drv = (DataRowView) e.Item.DataItem;
- if (drv == null)
- return;
- if ((int) drv["MyOrderID"] == -1)
- {
- if (drv["MyCustomerID"].ToString() == "(Total)")
- {
- e.Item.BackColor = Color.Yellow;
- e.Item.Cells[0].Text = "Orders total";
- }
- else
- e.Item.Cells[0].Text = "Customer subtotal";
- }
- }
最上面的一行是在黄色背景上绘制的,它显示其他汇总行中的另一个文本。最终的 DataGrid 显示如下。
DataGrid的样式:最终的 DataGrid
以应用程序特定的剂量很好地混合 SQL 代码和 ASP.NET 技术可以实现有效的 Web 数据库应用程序。DataGrid 控件是一个前沿工具,可用来为它所提供的编程功能构建完美而又功能强大的 Web 应用程序,而且对于它所支持的自定义级别来说用途更多。
分享文章:修改ASP.NETDataGrid的样式
本文网址:http://www.gawzjz.com/qtweb/news39/174489.html网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联