private void TopicDataList_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
string un=((System.Data.DataRowView)e.Item.DataItem)["user_id"].ToString();//这里出错 未将对象引用设置到对象的实例
((Label)e.Item.FindControl("lblProfile")).Text = un;
        }

解决方案 »

  1.   

    ItemCreated下还没有进行数据绑定,只是创建该项;你的代码应该放到OnItemDataBind下。
      

  2.   

    private void InitializeComponent()
    {
    this.TopicDataList.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.TopicDataList_ItemBound);
    this.Load += new System.EventHandler(this.Page_Load);
    } protected void TopicDataList_ItemBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    StringBuilder strUserProfile=new StringBuilder();
    string un=((System.Data.DataRowView)e.Item.DataItem)["user_id"].ToString();
    Label lblProfile =(Label)e.Item.FindControl("lblProfile");
       lblProfile.Text=un;
    这样也不对 能给个详细的解说吗?
    我再datalist的itmetemplate内放置了个lable需要显示一些信息 比如user_id等等.....
      

  3.   

    在OnItemDataBind下需要判断,并不是每个ItemType下都能找到你的Label的。你可以看一下ListItemType的说明;protected void TopicDataList_ItemBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    StringBuilder strUserProfile=new StringBuilder();
    string un=((System.Data.DataRowView)e.Item.DataItem)["user_id"].ToString();
    Label lblProfile =(Label)e.Item.FindControl("lblProfile");
       lblProfile.Text=un;