asp.net工具类
using System;
using System.Collections.Generic; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Collections; using System.Reflection; public class GridViewHelper { #region 私有方法 /// <summary> /// 截取内容长度 /// </summary> /// <param name="o_Str">原字符串</param> /// <param name="len">截取长度</param> /// <returns>截取后字符串</returns> private static string GetStrPartly(string o_Str, int len) { if (len == 0) { return o_Str; } else { if (o_Str.Length > len) { return o_Str.Substring(0, len) + ".."; } else { return o_Str; } } } /// <summary> /// 获取单元格内容 www.52mvc.com /// </summary> /// <param name="cell">TableCell</param> /// <returns>内容</returns> private 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("\r\n", "").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("\r\n", "").Trim(); break; } } return text; } /// <summary> /// 设置单元格内容 www.52mvc.com /// </summary> /// <param name="cell">TableCell</param> /// <param name="maxLen">最大长度</param> private static void SetCellText(TableCell cell, int maxLen) { string text = cell.Text; if (!string.IsNullOrEmpty(text)) { cell.Text = GetStrPartly(text, maxLen); } foreach (Control control in cell.Controls) { if (control != null && control is IButtonControl) { IButtonControl btn = control as IButtonControl; text = btn.Text.Replace("\r\n", "").Trim(); btn.Text = GetStrPartly(text, maxLen); 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("\r\n", "").Trim(); if (l is DataBoundLiteralControl) { cell.Text = GetStrPartly(text, maxLen); break; } else { l.Text = GetStrPartly(text, maxLen); break; } } } } #endregion #region 公有方法 /// <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); 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); if (!String.IsNullOrEmpty(text)) { if (rowIndex == 0) { string columnName = cols; if (String.IsNullOrEmpty(columnName)) { continue; } if (table.Columns.Contains(columnName)) { continue; } DataColumn dc = table.Columns.Add(); dc.ColumnName = columnName; dc.DataType = typeof(string); } row[j] = text; j++; } } rowIndex++; table.Rows.Add(row); } } return table; } /// <summary> /// 将集合类转换成DataTable /// </summary> /// <param name="list">集合</param> public static DataTable ToDataTable(IList list) { DataTable result = new DataTable(); if (list.Count > 0) { PropertyInfo[] propertys = list[0].GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { result.Columns.Add(pi.Name, pi.PropertyType); } for (int i = 0; i < list.Count; i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in propertys) { object obj = pi.GetValue(list, null); tempList.Add(obj); } object[] array = tempList.ToArray(); result.LoadDataRow(array, true); } } return result; } /// <summary> /// 将泛型集合类转换成DataTable /// </summary> /// <typeparam name="T">集合项类型</typeparam> /// <param name="list">集合</param> /// <param name="propertyName">需要返回的列的列名</param> /// <returns>数据集(表)</returns> public static DataTable ToDataTable<T>(IList<T> list, params string[] propertyName) { List<string> propertyNameList = new List<string>(); if (propertyName != null) propertyNameList.AddRange(propertyName); DataTable result = new DataTable(); if (list.Count > 0) { PropertyInfo[] propertys = list[0].GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { if (propertyNameList.Count == 0) { result.Columns.Add(pi.Name, pi.PropertyType); } else { if (propertyNameList.Contains(pi.Name)) result.Columns.Add(pi.Name, pi.PropertyType); } } for (int i = 0; i < list.Count; i++) { ArrayList tempList = new ArrayList(); foreach (PropertyInfo pi in propertys) { if (propertyNameList.Count == 0) { object obj = pi.GetValue(list, null); tempList.Add(obj); } else { if (propertyNameList.Contains(pi.Name)) { object obj = pi.GetValue(list, null); tempList.Add(obj); } } } object[] array = tempList.ToArray(); result.LoadDataRow(array, true); } } return result; } #endregion } 更多:http://www.52mvc.com/showtopic-1697.aspx
原文:http://blog.csdn.net/sophia_wjy
|
详细解决方案
相关解决方案
- C# Web Excel导入文件名称选择 &GridView 控件,该如何解决
- DevExpress.XtraGrid.Views.Grid.GridView 怎么自增新行
- dev gridView 依据列的不同值,给每行的同一列设置不同的颜色,字体设置成别的颜色
- 分页控件AspNetPager+GridView+xml怎么实现分页?
- GridView+联接水晶报表解决办法
- GridView+连接水晶报表
- gridview 即刻更新提醒显示
- GridView,剔除的是索引值而不是主键
- 求教为 GridView 赋值解决办法
- gridview 行状态DataControlRowState有关问题
- 怎么把 GridView 的B列中的链接字串作为A列内容的超链接标签
- 在<asp:GridView 中,该如何解决
- asp.net gridview 分页有关问题
- gridview 高亮显示鼠标所在行的有关问题
- GRIDVIEW 分页符下方的边框怎么去掉
- GridView 无数据展示表头及固定行并且行双击时能编辑
- gridview 如何获取信息.新手在线求解
- GridView 序号,分页接续显示
- GridView 剔除
- gridView treeView,该如何解决
- gridview 从新绑定数据后,check选中状态丢失
- gridview 固定首列,挪动滚动条时不发生运动
- 关于固定表头。(GridView,Table。),该如何解决
- GridView,没网格线
- GridView 怎么设置可编辑的CheckBox
- GridView 绑定视频播放器解决思路
- gridview 模板列 旋钮 根据绑定的字段值 显示不同状态
- GridView 展示截取长度
- GridView 取舍框里的Checked值都是false
- Gridview ,TextBox的简单有关问题,求教