如何在DataGrid绑定之前为DataSet添加新列

datagrid

在实际的应用中经常会遇到根据其它列计算某一新列的结果,实现这样的功能有两种办法:一个直接使用SQL语句;另外就是在绑定时进行动态添加。第一种方法以前已经介绍过。下面就是第二种方法的具体实现:

AddDataSetColumn.aspx

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="AddDataSetColumn.<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>x.vb"

  Inherits="<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>xWeb.AddDataSetColumn"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

  <HEAD>

    <title>AddDataSetColumn</title>

    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">

    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">

    <meta name="vs_defaultClientScript" content="JavaScript">

    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

  </HEAD>

  <body MS_POSITIONING="GridLayout">

    <form id="Form1" method="post" runat="server">

      <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False"

        ShowFooter="True" Width="100%">

        <HeaderStyle Font-Names="宋体" Font-Bold="True" HorizontalAlign="Center"

         ForeColor="Navy" BackColor="LightSalmon"></HeaderStyle>

        <FooterStyle BackColor="#FFCCFF"></FooterStyle>

        <Columns>

          <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn HeaderText="订单号">

            <ItemTemplate>

              <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label ID="OrderID" Runat="server"></<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label>

            </ItemTemplate>

          </<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn>

          <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn HeaderText="产品号">

            <ItemTemplate>

              <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label ID="ProductID" Runat="server"></<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label>

            </ItemTemplate>

          </<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn>

          <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn HeaderText="单价">

            <ItemTemplate>

              <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label ID="UnitPrice" Runat="server"></<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label>

            </ItemTemplate>

          </<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn>

          <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn HeaderText="数量">

            <ItemTemplate>

              <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label ID="Quantity" Runat="server"></<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label>

            </ItemTemplate>

          </<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn>

          <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn HeaderText="折扣">

            <ItemTemplate>

              <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label ID="Discount" Runat="server"></<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label>

            </ItemTemplate>

          </<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn>

          <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn HeaderText="总计">

            <ItemTemplate>

              <<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label ID="lblTotal" Runat="server"></<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:Label>

            </ItemTemplate>

          </<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:TemplateColumn>

        </Columns>

      </<a href="http://www.chinaitpower.com/Dev/Web/Asp/index.html" target="_blank">asp</a>:DataGrid>

    </form>

  </body>

</HTML>

AddDataSetColumn.aspx.vb

Imports System.Web.UI.WebControls

Public Class AddDataSetColumn

  Inherits System.Web.UI.Page

#Region " Web 窗体设计器生成的代码 "

  '该调用是 Web 窗体设计器所必需的。

  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

  End Sub

  Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

  '注意: 以下占位符声明是 Web 窗体设计器所必需的。

  '不要删除或移动它。

  Private designerPlaceholderDeclaration As System.Object

  Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

    'CODEGEN: 此方法调用是 Web 窗体设计器所必需的

    '不要使用代码编辑器修改它。

    InitializeComponent()

  End Sub

#End Region

  Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim strCnn As String = "Data Source=.\NetSDK; Initial Catalog=Northwind;User ID=sa;Password=;"

    Dim oCn As New System.Data.SqlClient.SqlConnection(strCnn)

    Dim strSql As System.String = "select * from [Order Details]"

    Dim ds As System.Data.DataSet = New System.Data.DataSet

    oCn.Open()

    Dim da As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(strSql, oCn)

    ' 可以直接使用SQL语句实现,这个方法可以直接绑定,不需要用模板即可

    ' cmd.CommandText = "select *,UnitPrice * Quantity *(1- Discount) as Total from [Order Details]"

    ' 我们使用另外一种方法,在DataGrid绑定之前为DataSet添加一个列

    da.Fill(ds, "DS")

    Dim dvwGrid As DataView = ds.Tables(0).DefaultView

    DataGrid1.DataSource = dvwGrid

    DataGrid1.DataBind()

    oCn.Close()

    oCn.Dispose()

  End Sub

  Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs) _

    Handles DataGrid1.ItemDataBound

    Dim elemType As ListItemType = e.Item.ItemType

    If (elemType = ListItemType.Item Or elemType = ListItemType.AlternatingItem) Then

      '把DataItem转换回DataRowView对象

      Dim myDataRowView As DataRowView = CType(e.Item.DataItem, DataRowView)

      Dim myDataRow As DataRow = myDataRowView.Row

      CType(e.Item.Cells(0).FindControl("OrderID"), Label).Text = myDataRow("OrderID")

      CType(e.Item.Cells(1).FindControl("ProductID"), Label).Text = myDataRow("ProductID")

      CType(e.Item.Cells(2).FindControl("UnitPrice"), Label).Text = myDataRow("UnitPrice")

      CType(e.Item.Cells(3).FindControl("Quantity"), Label).Text = myDataRow("Quantity")

      CType(e.Item.Cells(4).FindControl("Discount"), Label).Text = myDataRow("Discount")

      Dim dblPrice As Double = Double.Parse(myDataRow("UnitPrice"))

      Dim intQuantity As Integer = Int32.Parse(myDataRow("Quantity"))

      Dim intDiscount As Double = Double.Parse(myDataRow("Discount"))

      Dim nTotal As String = String.Format("{0:C}", dblPrice * (1 - intDiscount) * intQuantity)

      CType(e.Item.Cells(5).FindControl("lblTotal"), Label).Text = nTotal

    End If

  End Sub

End Class

时间: 2024-08-28 12:40:25

如何在DataGrid绑定之前为DataSet添加新列的相关文章

SQL Server表中添加新列并添加描述_MsSql

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' ************

SQL Server表中添加新列并添加描述

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' ************

嵌入式开发-在Window CE 操作系统中,如何在DataGrid 中添加ComboBox 控件

问题描述 在Window CE 操作系统中,如何在DataGrid 中添加ComboBox 控件 最近在开发手持机,因为公司要求,将ERP 系统置入到手持机中,发现在Window CE 系统中,很多 控件都无法使用.譬如说,要在DataGrid 中添加列,要求在DataGrid 中操作数据,下拉的 ComBobox 就没有,也没有DataGridComBoBox 列,如何处理,请各位兄弟指教. QQ:870088133 解决方案 CE版的控件是精简的,很多功能都没有.需要自己实现. 你说的添加C

ASP.NET在DataGrid快速添加新行

asp.net|datagrid    ASP.net DataGrid为我们提供的内建的记录行编辑功能,但是没有提供内建的添加新行的功能.一个办法就是:在DataTable中添加新行,然后再重新绑定到DataGrid,这个办法可行,但在更新前需要进行确认,可能会产生空行.另外一个解决办法就是:利用DataGrid footer template来提供一个空的行,这样既可以提高速度,也可以避免其它方法带来的不足.      为了为浏览者提供一个空行,我们使用DataGrid的Footer Tem

关于c#中两个DataGrid绑定到主表和子表的数据同步问题

datagrid|数据|数据同步|问题 在数据库编程中,我们常常要将主表和子表分别绑定到两个DataGrid,同时还有一些TextBox之类的控件要显示相应DataGrid中的数据,这时候数据的同步就成了一个问题.这个问题的解决方法就是使用BindingManagerBase来管理数据了.在DataSet中的两个表之间添加关系 private void CreateRelation(Dataset ds,string relationname,string MasterTableName,str

如何在DataGrid控件中实现自定义分页_自学过程

如何在DataGrid控件中实现自定义分页      在一般情况下,DataGrid控件每次实现翻页操作时,都会将数据源中的数据重新调用一次,当数据中 数据很多时,这样做就会很浪费系统资源和降低程序的执行效率.这时候我们一般通过自定义分页来解 决这个问题.     DataGrid控件的AllowCustomPaging属性用来获取或设置DataGrid控件是否允许自定义分 页;VirtualItemCoun属性用来获取或设置在使用自定义分页时DataGrid中实际的项数.要实现自定义分 页,必

如何在DataGrid里面使用动态图形表示数字

datagrid|动态|图形 本文将要简单的介绍如何在DataGrid里面用图形表是一个数字,听起来好象要用到GUI的编程,其实不然,如果你读完全文你就会发现其实很简单,只是一个"小把戏"而已,但是请不要失望,其实在实际的应用中这个"小把戏"就是你项目中的一个亮点. 首先为了实现这个功能我们需要一个DataGrid,并且为这个DataGrid邦定数据,具体的邦定代码如下(由于我说明问题的重点不在如何邦定DataGrid所以我就是用了最原始的邦定方法,目的旨在说明主题

请问如何在DateGridView控件最后一行添加合计

问题描述 我是直接拖控件绑定的,这是代码(使用的是存储过程):this.案件状态_案件状态跟踪查看TableAdapter.Fill(aISINO_TAMISDataSet1.案件状态_案件状态跟踪查看,this.dateTimeInput2.Value.ToString("yyyy-MM-dd"),this.dateTimeInput3.Value.ToString("yyyy-MM-dd"),科所代码,是否领导,comboBoxEx1.SelectedItem.

DataGrid 动态添加模板列 实现代码_实用技巧

使用模版的另一个优势,就是它们能动态的添加到你的控件里面去. 这样的话, 你可以事先设计好模版, 然后通过简单的几行代码就添加到你的控件中. 下面这篇文章就要告诉你如何如何一步步的添加一个动态的ItemTemplate和EditItemTemplate到DataGrid中. 另外, 还会告诉你怎么获取和更新用户对EditItemTemplate所做的改变. 例子将会是很简单的. 然后, 我很快就会在TripleASP上面正式发布一个改进后的TableEditor版本. 这个版本将更好的说明如何使