采用asp:BoundColumn列

前台:

  <asp:BoundColumn DataField="UserID" HeaderText="工号">

后台:

foreach (DataGridItem item in dataGrid.Items)
{
string userID = item.Cells[].Text; }

这样的弊端就是如果列的索引发生变化,就导致读取不到对应的列所对应的单元格值。

最佳方法应该采用asp:TemplateColumn模板列的方式

参考:http://blog.csdn.net/aiouwen521/article/details/8490742

前台:

<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox Runat="server" ID="txtID" Text='<%# DataBinder.Eval(Container.DataItem,"au_id") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>

后台:

读取DataGrid控件TextBox值

foreach(DataGrid dgi in yourDataGrid.Items)
{
 TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
 tb.Text....
}

针对TemplateColumn 优雅写法:

 List<RollLeaveDetailCom> rollLeaveDetailComList = new List<RollLeaveDetailCom>();
foreach (DataGridItem item in this.gridDetails.Items)
{
RollLeaveDetailCom leaveDetailCom = new RollLeaveDetailCom();
leaveDetailCom.StartDate = Convert.ToDateTime(item.ValueOf("txtStartDate"));
leaveDetailCom.StartTime = item.ValueOf("txtStartTime");
leaveDetailCom.EndDate = Convert.ToDateTime(item.ValueOf("txtEndDate"));
leaveDetailCom.EndTime = item.ValueOf("txtEndTime");
leaveDetailCom.TotalDay = item.ValueOf("txtTotalTime").Replace("天", "").ToInt();
leaveDetailCom.SalaryDay = item.ValueOf("txtSalaryTime").Replace("天", "").ToInt();
rollLeaveDetailComList.Add(leaveDetailCom);
}
return rollLeaveDetailComList; /// <summary>
/// 扩展 DataGridItem, 取其内部控件的值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="item"></param>
/// <param name="ctrlId"></param>
/// <returns></returns>
public static string ValueOf(this DataGridItem item, string ctrlId)
{
if (item == null || string.IsNullOrEmpty(ctrlId)) return string.Empty;
Control ctrl = item.FindControl(ctrlId);
string result = string.Empty;
if (ctrl is TextBox)
result = (ctrl as TextBox).Text;
else if (ctrl is HyperLink)
result = (ctrl as HyperLink).Text;
else if (ctrl is LinkButton)
result = (ctrl as LinkButton).Text;
else if (ctrl is HiddenField)
result = (ctrl as HiddenField).Value;
else if (ctrl is DropDownList)
result = (ctrl as DropDownList).SelectedValue;
return result;
}

注意:BoundColumn列转换为TemplateColumn 可以通过DataGrid的属性编辑器可视化UI设计窗口进行转换。

ASP.NET 最佳DataGrid读取单元格的值的更多相关文章

  1. easyui前台改变datagrid某单元格的值

    有时候前台完成某个操作后要修改datagrid的值, 也许这个datagrid是没有保存的, 所以要修改后才能传递到后台; 也许要其他操作过后才需请求后台; 这些情况都需要前台对datagrid的单元 ...

  2. DataGrid获取单元格的值

    string str = (dataGrid.Columns[0].GetCellContent(dataGrid.Items[0]) as TextBlock).Text;

  3. Easyui datagrid 扩展单元格textarea editor

    datagrid 扩展单元格textarea editor by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述 如下,在没有扩展的情况下,初始化如下 手 ...

  4. easyui datagrid 合并单元格

    整理以前做的东西,这个合并单元格的问题再新浪博客也写过了..... 下面这段代码是列表数据 //载入排放系数管理报表数据 function LoadEmissionReportData() { //获 ...

  5. easyui datagrid单击单元格选择此列

    示例代码实现单击jquery easyui datagrid的单元格时,取消datagrid默认选中高亮此行的样式,改为选中单击的单元格所在的列,高亮此列上的所有单元格.可以配置全局single变量, ...

  6. 扩展jquery easyui datagrid编辑单元格

    扩展jquery easyui datagrid编辑单元格 1.随便聊聊 这段时间由于工作上的业务需求,对jquery easyui比较感兴趣,根据比较浅薄的js知识,对jquery easyui中的 ...

  7. Silverlight的DataGrid合并单元格

    现在也不知道还有没有同学做Silverlight开发了,我是一个Silverlight菜鸟,遇到问题也很难百度查到.就简单的记录一下这两天遇到的问题,并做了一个简单的小Demo,希望能够帮助到其他同学 ...

  8. JS实现EasyUI ,Datagrid,合并单元格功能

    为了实现datagrid的合并单元格效果,datagrid的数据加载方式肯定是要写在JS文件内部的. 一:在JS内部添加Datagrid数据加载方法如下: $("#id").dat ...

  9. Easyui的datagrid的行编辑器Editor中添加事件(修改某个单元格带出其他单元格的值)

    项目中有个datagrid需要编辑行时,用到Editor的属性,那么如何添加一个事件 问题:同一个编辑行中的某个单元格值改变时,修改其他单元格的值 页面用到的datagrid <table id ...

随机推荐

  1. Mysql避免全表扫描sql查询优化 .

    对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引: .尝试下面的技巧以避免优化器错选了表扫描: ·   使用ANALYZE TABLE tbl_n ...

  2. source 命令

    作用: 当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录:这时就想到用source命令,如:source /etc/profile 介绍:source命令也称为“点命令”,也就 ...

  3. Eclipse for PHP Developers + xamp +xdebug

    php 开发环境搭建 1.安装xamp 我的版本是v3.2.1 2.安装下载“Eclipse for PHP Developers”解压即可使用 3.配置“Eclipse for PHP Develo ...

  4. Delphi RxRichEdit高级操作

    unit InsertRichEditUnit;interfaceuses  Windows, Messages, SysUtils, Classes, Graphics, Controls, For ...

  5. linux中ulimit作用

    一.作用 Linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数. ulimit主要是用来限制进程对资源的使用情况的,它支持各种类型的限制, ...

  6. hihocoder 1356 分隔相同整数 简单贪心

    分析:考虑贪心,考虑填ans[i],前i-1个合法,现在剩下一些数, 那么挑出出现次数最多的数,次数为mx,当前剩余总数为sum 如果sum-mx>=mx-1那么肯定有解,这个想想就知道了(这种 ...

  7. PHP 代码质量检测工具的安装与使用

    代码统计工具 PHPLOC安装:wget https://phar.phpunit.de/phploc.phar chmod +x phploc.phar sudo mv phploc.phar /u ...

  8. Python 统计文本中单词的个数

    1.读文件,通过正则匹配 def statisticWord(): line_number = 0 words_dict = {} with open (r'D:\test\test.txt',enc ...

  9. vim 7.4 编译安装

    (1): 在安装新版本的Vim之前,你需要卸载原来安装的老版本Vim,依次在终端下执行下列命令: sudo apt-get remove vim sudo apt-get remove vim-run ...

  10. STL源码剖析读书笔记--第6章&第7章--算法与仿函数

    老实说,这两章内容还蛮多的,但是其实在应用中一点点了解比较好.所以我决定这两张在以后使用过程中零零散散地总结,这个时候就说些基本概念好了.实际上,这两个STL组件都及其重要,我不详述一方面是自己偷懒, ...