ASP.NET 最佳DataGrid读取单元格的值

采用asp:BoundColumn列

前台:

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

后台:

foreach (DataGridItem item in dataGrid.Items)
{
    string userID = item.Cells[1].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设计窗口进行转换。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

win10 uwp 读取保存WriteableBitmap 、BitmapImage 保存 WriteableBitmap 到文件从文件读 WriteableBitmapIma

我们在UWP,经常使用的图片,数据结构就是 BitmapImage 和 WriteableBitmap。关于 BitmapImage 和 WriteableBi...

14710
来自专栏张善友的专栏

RESTful WCF

相较 WCF、WebService 使用 SOAP、WSDL、WS-* 而言,几乎所有的语言和网络平台都支持 HTTP 请求。我们无需去实现复杂的客户端代理,无...

205100
来自专栏偏前端工程师的驿站

GridView实战一:自定义分页、排序、修改、插入、删除

前言:   在某次公司面试时被问到对GridView操作的熟悉程度,在那之前一直用Repeater内嵌table标签对GridView操作确实很少,于是最近在项...

432100
来自专栏Golang语言社区

原子读写性能简单测试

代码如下: package main import ( "fmt" "sync/atomic" "time" ) func benc...

46560
来自专栏飞扬的花生

基于ASP.MVC票据FormsAuthenticationTicket身份认证

做一个最基础的业务需求用户登录,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端。服务端上的...

46570
来自专栏张善友的专栏

WCF服务中操作FormsAuthentication的Cookie

在asp.net 应用程序和WCF服务之间共享FormsAuthentication,默认是不支持的,设置一下非常的简单,只需要两步就可以了: 1、在web.c...

22150
来自专栏木宛城主

SharePoint 2013 How to Backup Site Collection Automatically With a PowerShell Script

In this post I will introduce a way how to run a script for backing up SharePoin...

25270
来自专栏c#开发者

MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013

MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具 经过一个多星期的努力总算完成了单表,多...

470130
来自专栏听雨堂

ASP.NET TreeView相关问题

1、用代码在treeview web控件中,添加node的方法 表字段:编号,父编号,名称 数据: 1 0 中华人民共和国 2 1 湖南 3 1 湖北...

22170
来自专栏逸鹏说道

万恶的剪贴板==》为存储而生

近几天逆天经常大量复制粘贴一些图文信息,在某些特定的场合,图片都是无法直接粘贴进去的,就比如博客园的编辑器。 源码:https://github.com/dun...

29280

扫码关注云+社区

领取腾讯云代金券