protected void rptnews_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataSet ds1 = operate.NewsGetDataSet (Convert.ToInt32(Session["Uid"]));
        int UserType = Convert.ToInt32 (ds1.Tables[0].Rows[0][0]);
        RepeaterItem item = e.Item;
        if (item == null || (item.ItemType != ListItemType.Item && item.ItemType != ListItemType.AlternatingItem)) 
        {
            return;
        }
        if (UserType==1) 
        {
            item.FindControl ("lkedit").Visible =true;
            item .FindControl ("lkdel").Visible =true ;
        }
        else 
        { 
            string Uid=DataBinder.Eval (item.DataItem,"Uid","{0}");            if(Uid ==Convert.ToString(Session ["Uid"]))
            {
                item.FindControl ("lkedit").Visible =true;
                item .FindControl ("lkdel").Visible =true ;
            }
            else 
            {
                item.FindControl ("lkedit").Visible=false;
                item.FindControl ("lkdel").Visible =false;
            }
            
        }    }请帮我解释一下上面带颜色的句子怎么理解,这段代码判断repeater项里面用户类型,根据用户类型确定显示与不显示编辑和删除按钮。

解决方案 »

  1.   

    DataBinder.Eval(Container.DataItem, "", "{0}") 
    DataBinder.Eval 返回 对象类型的值,
    RepeaterItem的DataItem属性值只有在RepeaterItem创建后以及绑定数据后,也就是只有在Repeater的ItemCreated和ItemDataBound事件中才能获取
      

  2.   

    看到第一行  DataSet ds1 = operate.NewsGetDataSet (Convert.ToInt32(Session["Uid"]));我就不想看下去了。没当绑定一行数据,就重复产生一遍这个 DataSet?
    面对这类代码不要去修改它,赶紧删除了然后到设计html页面上去设置绑定表达式,并使用数据绑定控件来提供数据源。一行代码都不写,才会更好地设计软件。