Asp.net_静态方法之Grid转DataTable方法分享
2013-03-13 14:43
246 查看
GridView绑定DataTable后,如何获取GridView绑定后显示的值,在项目需求需要的背景下,搜索了获取单元格显示文本的方法,然后写了一个静态方法,经过在项目中的使用,bug的修复,较为稳定。
独乐乐不如众乐乐,把代码贴出来供大家指正。
技术博客,请尊重博主劳动成果,转载请注明出处,谢谢合作。
【End】
更多精彩博文请移步博客主页:http://blog.csdn.net/ls_man
更多精彩分享请收听博主腾讯微博@ls_man:http://t.qq.com/ls_man
独乐乐不如众乐乐,把代码贴出来供大家指正。
#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生成静态网页的方法
- Asp.net AJAX调用后台静态方法总结
- asp.net中将DataTable根据xslt生成html静态页面,支持分页
- 轻松解决asp.net用户ASPNET登录失败问题的方法分享
- ASP.NET 2.0 实现伪静态网页方法 (转载 ————续)
- 轻松解决asp.net用户ASPNET登录失败问题的方法分享
- ASP.NET:通过反射填充泛型集合List的静态方法
- ASP.NET伪静态的实现方法
- ASP.NET操作SQL Server 存储大文件的方法分享
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- asp.net字符串分割函数使用方法分享
- ASP.NET 动态转静态页面的两种方法总结
- ASP.NET生成静态网页的方法
- CentOS 5.1下跑Mono和Asp.net的实现方法分享
- ASP.NET实现伪静态网页方法小结
- ASP.NET 动态转静态页面的两种方法总结 (转转)
- asp.net异步获取datatable并显示的实现方法