从GridView生成DataTable

时间:2010-03-03 12:19:54  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:生成DataTable的方法,不管原来的GridView数据源是否是DataTable,都能使用该方法       /**//*----------------------------------------------------------------    // Copyright (C) 2007 jillzhang 版权所有。    //    // 文件名:GridView.cs    // 文件功能描述:  ...
  正文:DataTable与GridView从数据结构上来看都是一个由row和column组成表的结构,我们大部分时间是将DataTable绑定到GridView中,但web中当页面回传的时候,传递给GridView的数据源却再也找不到了,这是一件很郁闷的事情,下面我们根据两者的相似性,实现从GridView生成DataTable的方法,不管原来的GridView数据源是否是DataTable,都能使用该方法
  
   /**//*----------------------------------------------------------------
   // Copyright (C) 2007 jillzhang 版权所有。
   //
   // 文件名:GridView.cs
   // 文件功能描述:
   //
   // 创建标识:jillzhang
   // 修改标识:
   // 修改描述:
   //
   // 修改标识:
   // 修改描述:
   //----------------------------------------------------------------*/
  
   using System;
   using System.Collections.Generic;
   using System.Text;
   using System.Web.UI.WebControls;
   using System.Data;
   using System.Web.UI;
  
  
   namespace jzlib.Common
   {
   public class GridViewHelper
   {
   public static string GetCellText(TableCell cell)
   {
   string text = cell.Text;
   if (!string.IsNullOrEmpty(text))
   {
   return text;
   }
   foreach (Control control in cell.Controls)
   {
   if (control != null && control is IButtonControl)
   {
   IButtonControl btn = control as IButtonControl;
   text = btn.Text.Replace("rn", "").Trim();
   break;
   }
   if (control != null && control is ITextControl)
   {
   LiteralControl lc = control as LiteralControl;
   if (lc != null)
   {
   continue;
   }
   ITextControl l = control as ITextControl;
  
   text = l.Text.Replace("rn", "").Trim();
   break;
   }
   }
   return text;
   }
   /**//// <summary>
   /// 从GridView的数据生成DataTable
   /// </summary>
   /// <param name="gv">GridView对象</param>
   public static DataTable GridView2DataTable(GridView gv)
   {
   DataTable table = new DataTable();
   int rowIndex = 0;
   List<string> cols = new List<string>();
   if (!gv.ShowHeader && gv.Columns.Count == 0)
   {
   return table;
   }
   GridViewRow headerRow = gv.HeaderRow;
   int columnCount = headerRow.Cells.Count;
   for (int i = 0; i < columnCount; i++)
   {
   string text = GetCellText(headerRow.Cells[i]);
   cols.Add(text);
   }
   foreach (GridViewRow r in gv.Rows)
   {
   if (r.RowType == DataControlRowType.DataRow)
   {
   DataRow row = table.NewRow();
   int j = 0;
   for (int i = 0; i < columnCount; i++)
   {
   string text = GetCellText(r.Cells[i]);
   if (!String.IsNullOrEmpty(text))
   {
   if (rowIndex == 0)
   {
   string columnName = cols[i];
"从GridView生成DataTable"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13004.html


关键字:

关于《从GridView生成DataTable》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td