Asp.net_静态方法之Grid转DataTable方法分享
来源:互联网 发布:九年级英语unit4知 编辑:程序博客网 时间:2024/05/17 02:58
GridView绑定DataTable后,如何获取GridView绑定后显示的值,在项目需求需要的背景下,搜索了获取单元格显示文本的方法,然后写了一个静态方法,经过在项目中的使用,bug的修复,较为稳定。
独乐乐不如众乐乐,把代码贴出来供大家指正。
#region ================GridView转DataTable方法================ /// <summary>GridView转DataTable 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary> /// <param name="gv">已绑定数据源的GridView</param> /// <param name="showHideColumn">是否显示隐藏列</param> /// <returns>DataTable</returns> public static DataTable GridViewToDataTable(GridView gv, Boolean showHideColumn) { //处理后的数据表 DataTable dt = new DataTable(); //记录符合条件索引 int[] columnIndexs = new int[gv.HeaderRow.Cells.Count]; //记录指示器从0开始 int columnIndexsCount = 0; //初始化dt列名 for (int i = 0; i < gv.HeaderRow.Cells.Count; i++) { //获取列名 string columnName = GetCellText(gv.HeaderRow.Cells[i]); //string columnName = gv.HeaderRow.Cells[i].Text; //列名非空//且可见 if (!string.IsNullOrEmpty(columnName)) { //是否显示隐藏列 if (gv.HeaderRow.Cells[i].Visible || showHideColumn) { //列名不允许重复 if (!dt.Columns.Contains(columnName)) { //dt中新增一列 DataColumn dc = dt.Columns.Add(); //列名 dc.ColumnName = columnName; //存储的数据类型 dc.DataType = typeof(string); //记录符合条件的列索引 columnIndexs[columnIndexsCount] = i; //记录指示器+1 columnIndexsCount++; } } } }//版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处 //GridView行复制到数组中便于操作 GridViewRow[] allGridViewRow = new GridViewRow[gv.Rows.Count]; gv.Rows.CopyTo(allGridViewRow, 0); //数据添加到dt中 foreach (GridViewRow row in allGridViewRow) { //创建一行 DataRow dr = dt.NewRow(); //符合条件的列 for (int i = 0; i < columnIndexsCount; i++) { //获取显示文本并保存 dr[i] = GetCellText(row.Cells[columnIndexs[i]]); } //dt中增加此行 dt.Rows.Add(dr); } //返回处理后的数据 return dt; } /// <summary>GridView转DataTable 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary> /// <param name="gv">未绑定数据源的GridView</param> /// <param name="dtSource">GridView的数据源</param> /// <param name="showHideColumn">是否显示隐藏列</param> /// <returns>DataTable</returns> public static DataTable GridViewToDataTable(GridView gv, DataTable dtSource, Boolean showHideColumn) { //绑定原始数据到GridView gv.DataSource = dtSource; gv.DataBind(); //设置为不分页 gv.AllowPaging = false;//版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处 //GridView转DataTable并返回 return GridViewToDataTable(gv, showHideColumn); } #endregion #region ================私有工具方法================ /// <summary>获取TableCell的显示文本 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary> /// <param name="cell">TableCell</param> /// <returns>string</returns> private static string GetCellText(TableCell cell) { string cellText = cell.Text; //常规文本(无控件)直接返回 if (!string.IsNullOrEmpty(cellText)) { //返回显示文本 return cellText.Replace(" ", ""); } //遍历cell中的控件 foreach (Control control in cell.Controls) { if (control != null && control is IButtonControl) { IButtonControl btn = control as IButtonControl; cellText += btn.Text.Replace("\r\n", "").Trim(); continue; }版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处 if (control != null && control is ITextControl) { LiteralControl lc = control as LiteralControl; if (lc != null) { //跳出到下一步foreach continue; } ITextControl l = control as ITextControl; cellText += l.Text.Replace("\r\n", "").Trim(); continue; } } //返回显示文本 return cellText; } #endregion
版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
【End】
更多精彩博文请移步博客主页:http://blog.csdn.net/ls_man
更多精彩分享请收听博主腾讯微博@ls_man:http://t.qq.com/ls_man
- Asp.net_静态方法之Grid转DataTable方法分享
- Asp.net_使用FileUpload控件上传文件通用方法分享
- Asp.net_跨页面传值的几种方法
- [Asp.Net]DataTable装置方法
- 一步一步asp.net_页面静态化管理
- Asp.net_选择性的保留DataTable中的列
- ASP生成静态页面的方法(转)
- ASP.NET操作DataTable各种方法总结
- Asp.net_清空控件值的方法(可指定控件类型)
- DataTable.Merge 方法 (DataTable)
- DataTable.Merge 方法 (DataTable)
- DataTable 方法
- ASP生成静态页面方法
- ASP生成静态页面方法
- ASP生成静态页面方法
- asp 页面伪静态方法
- ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
- ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
- 字符串字面值、C风格字符串、C++风格字符串 一、字符串字面值
- 上下界网络流
- 虚拟内存管理的作用/好处
- Django学习笔记---创建第一个页面
- Android开发:使用Fragment改造TabActivity
- Asp.net_静态方法之Grid转DataTable方法分享
- 集合框架(List 、Set)
- GridEH的PickList自动弹出下拉
- Qt编写串口通信程序详解
- [Android] 以post方式上传参数
- WIA 知识简介
- 近期计划
- 样本方差为什么是除以n-1?
- 快排。