LblID是DataList里面Label的ID

解决方案 »

  1.   

    不好意思,说得不清楚。
    可以这样理解:在一个Datalist的模板列里面有一个Label,ID为LblID.然后在DataListList_ItemDataBound时间里希望获得该Label然后进行赋值。
    Dim Label1 as Label =Ctype(e.Item.FindControl("LblID"),Label
    但是赋值总是失败因为e.Item.FindControl("LblID")总是找不到ID为LblID的控件。以前在aspx的页面里面执行该方法的时候可以,但是现在是在一个用户控件里面执行,执行的时候就出现上面的情况。而且该用户控件是从自己写的用户控件基类继承而来的。具体不知是什么原因造成找不到LblID
      

  2.   

    我猜的:
    可能是控件嵌套
    ID变化了
    用遍历查找试下
    if(e.Item != null)
    {
    foreach(Contorl c e.Item.Controls)
    {
     if(c is Label)
    {
    ///
    }
    }
    }
    else
    {
    throw new ApplicationException('null reference');
    }
      

  3.   

    我用以下的办法获得控件的ID还是没变。
    If Not e.Item Is Nothing Then            For Each c As Control In e.Item.Controls
                        If TypeOf c Is Label Then                        Response.Write(c.ID)                    End If
                NextEnd If
      

  4.   

    你先不要赋值,让页面正常运行,看一下页面生成的源代码,然后看一下Lable的ID是不是你说的那个ID。
      

  5.   

    去研究一下用户控件中事件的执行顺序,页面的LOad事件前面还有Init,把用户控件中的DataList放在Init中初始化
      

  6.   

    To :说实话,我不会
    你说的是 c.ClientID 而不是e.Item.FindControl需要的c.ID
      

  7.   

    To:foxconn_nich(—— www.jemy.cn ——) 
    和Page.Load 或Init事件有关联吗?上面的操作事件是在DataList_ItemDataBound里面发生的。
      

  8.   

    改用
    (Label)DataList1.Items[e.Item.ItemIndex].FindControl("LblID")试试?
      

  9.   

    To:gsp365(aaa)
    该方法不行。
      

  10.   

    问题找到了原来在DataList里面加入了
    <SeparatorTemplate>
      <FONT face="宋体">SSSSSSSSSSSS</FONT>
    </SeparatorTemplate>
    导致 FindControl失效.