datalist绑定的数据库。有一字段是“难度等级”
1,2,3
要实现功能:跟据“难度等级”显示不同的星星图片
前台:
                        <tr>
                            <td style="color: rgb(101,101,101); font-size: 14; height: 30px;">
                                <asp:Label ID="lb1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "KunNan")%>'></asp:Label>
                                <asp:Image ID="Image1"  runat="server" AlternateText='<%# DataBinder.Eval(Container.DataItem, "KunNan")%>' />
                            </td>
                        </tr>
 
后台:
    protected void dlFree_OnItemDataBound(object sender, DataListItemEventArgs  e)
    {
        Label lbtmp=(Label)e.Item.FindControl("lb1");
        Image imageTmp=sender as Image;
        switch (lbtmp.Text)
        {
            case "1": imageTmp.ImageUrl = "~/images/star_all1.jpg"; break;            case "2": imageTmp.ImageUrl = "~/images/star_all2.jpg"; break;
            default: imageTmp.ImageUrl = "~/images/star_all3.jpg"; break;
        }
    }红色地方报错:未将对象引用设置到对象的实例。

解决方案 »

  1.   

    <asp:Image 如果这个是放在datalist里,就不能直接引用,需要findcontrol
      

  2.   

     protected void dlFree_OnItemDataBound(object sender, DataListItemEventArgs e)
      {
     if (e.Item.ItemType== ListItemType.Item||e.Item.ItemType== ListItemType.AlternatingItem)
                {

      Label lbtmp=(Label)e.Item.FindControl("lb1");
      Image imageTmp=sender as Image;
      switch (lbtmp.Text)
      {
      case "1": imageTmp.ImageUrl = "~/images/star_all1.jpg"; break; case "2": imageTmp.ImageUrl = "~/images/star_all2.jpg"; break;
      default: imageTmp.ImageUrl = "~/images/star_all3.jpg"; break;
      }
    }
      }同样注意红颜色的
      

  3.   


    这个也是要加的
    还有Image imageTmp=sender as Image;---------------->Image imageTmp = (Image)e.Item.FindControl("Image控件的ID");
      

  4.   

    if (e.Item.ItemType== ListItemType.Item||e.Item.ItemType== ListItemType.AlternatingItem)加这个是什么用的
      

  5.   


    判断item的类型。。
    每天回帖就可以得10分可用分
      

  6.   

    OnItemDataBound这个控件属性在什么情况下网页才反应出来呢?