zoukankan      html  css  js  c++  java
  • Datalist中获取模板中控件Label的值

     昨晚调试datalist时遇到了一些问题,特将此记下,希望给用的上的朋友一点帮助

     在datalist的ItemCreated事件中获取在ItemTemplete的一个Label标签

    <ItemTemplate>
    <asp:Label ID="lblCreationTime2" runat="server"
    Text
    ='<%# Bind("creationTime","{0:d}") %>'></asp:Label>
    </ItemTemplate>

     的确,很简单,我匆匆的在ItemCreated事件中写了大家都很熟悉的代码

     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {  
         Label lblcreation = (Label)e.Item.FindControl("lblCreationTime2");
       }
    

     然后我要做的事情就是获取这个lblcreation的Text属性,用DateTime.Parse强制转换一下,这时候程序总是提示

     

     起初以为是参数写的不对,我修改了一下代码,将方法中参数lblCreationTime2改为lblCreationTime,再次运行程序

     

     简单的证明并不是这些粗心的问题,于是我设断点调试,发现了一个奇怪的现象

     

    标签到最后还是空值,这样折腾了我近两个小时,终于在MSDN上找到了一句话:

     

    问题的原因算是解决了,那么怎么解决这个问题呢?

    然后我又不停的找啊找,最终在宿舍网断开的那关键时刻找到了解决方法:

          Control ctrl = e.Item.Controls[0];
          Label lbl = (Label)ctrl.FindControl("lblCreationTime2");
           lbl.Text = DataBinder.Eval(e.Item.DataItem, "creationTime").ToString();
    

     这时候,DateTime.Parse(lbl.Text)时顺利通过,

     贴一下这个功能完整代码吧:

    代码
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    {        Control ctrl = e.Item.Controls[0];       
              Label lbl = (Label)ctrl.FindControl("lblCreationTime2");         
              lbl.Text = DataBinder.Eval(e.Item.DataItem, "creationTime").ToString();     
              string time = lbl.Text;   
              Response.Write(time);

     本文参考了:http://kb.cnblogs.com/a/730044/

    PS:这是我的第一篇技术博客,希望大家能够提意见,也希望和更多的.NET朋友互相交流

                 

  • 相关阅读:
    js实现快速排序
    vue+Elementui表单验证基本使用
    angular 报错 Cannot assign to a reference or variable!
    nz-table复选功能改造(整行可选)
    angular在父组件设置子组件样式
    angular6路由参数的传递与获取
    上下滚动,头部固定,左右滚动,左侧边栏固定布局
    TimePicker
    angular配置懒加载路由的思路
    angular实现draggable拖拽
  • 原文地址:https://www.cnblogs.com/626498301/p/tercy.html
Copyright © 2011-2022 走看看