请问一下:((Label)DataList1.SelectedItem.FindControl("Label8")).Text取值,但在这儿报错:未将对象引用设置到对象的实例。 是怎么回事呀

解决方案 »

  1.   

    你的控件没有找到lable8,debug一下lable8是不存在,DataList1里选定列里有没有lable8这个控件。
      

  2.   

    <asp:Label id=lblTemp Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Value")%>'></asp:Label>
    label的text要用<%# DataBinder.Eval(Container.DataItem, "Value")%>才能找到.
      

  3.   

    对象的实例怎么引用,是引用DataList1还是引用DataList1模板中Label8呀?能给个例子吗?
      

  4.   

    tnt8csdn2000(琥珀雨田) ,我用了<%# DataBinder.Eval(Container.DataItem, "Value")%>
      

  5.   

    加上这个if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem )
    { ......}
      

  6.   

    我不是在DataList1的事件中用((Label)DataList1.SelectedItem.FindControl("Label8")).Text,是在一个方法中用((Label)DataList1.SelectedItem.FindControl("Label8")).Text,所以没有e,此e非彼e
      

  7.   

    一个方法中用((Label)DataList1.SelectedItem.FindControl("Label8")).Text;当然找不到了SelectedItem.必须要指定DataList1.items[e.item.itemindex]才能找到了.或者你选了datalist后,用事件把e.item.itemindex放在ViewState里,DataList1.items[Convert.ToInt(ViewState["e"])].
      

  8.   

    但这样有个问题:我在DataList1模板中有个Button的web控件,在控件的事件中用了((Label)DataList1.SelectedItem.FindControl("Label8")).Text这个,如果选了datalist后,用事件把e.item.itemindex放在ViewState里,我发现datalist中itemcommand事件执行在Button的ONCLIK时间之后,那就得不到ViewState["e"]值
      

  9.   

    这样还不好办,给这个button加个commandname update/cancel/edit 都可以.然后用
    dllist中加个onupdatecommand="dlupdate"后台private void button(object sender, DataListCommandEventArgs e)
    {
       ((Label)DataList1.items[e.item.itemindex].FindControl("Label8"))
    }
    就行啦.
      

  10.   

    tnt8csdn2000(琥珀雨田),测试了一下,不行.