我有一个DataList控件,在<ItemTemplate>中我放置了2个ImageButton按钮!我想根据不同的权限显示不同的按钮,但我在显示的时候会报:
System.NullReferenceException: 未将对象引用设置到对象的实例。==============================前台页面代码如下:
<asp:datalist id="FuncList" runat="server" OnItemDataBound="FuncList_OnItemDataBound" DataKeyField="BKID">
   <HeaderTemplate>
     <table>
   </HeaderTemplate>
   <ItemTemplate>
    <tr>
        <td>
             <asp:ImageButton id="ImageButton1" runat="server"  imggeUrl="edit.gif" CommandName="edit" ></asp:ImageButton>
             <asp:ImageButton id="ImageButton2" runat="server"  imggeUrl="del.gif" CommandName="del" ></asp:ImageButton>
        </td>
    </tr>
   <ItemTemplate>
   <FooterTemplate>
    </table>
   <FooterTemplate>
</asp:datalist>=======================
后台中的FuncList_OnItemDataBound中的代码如下:public void FuncList_OnItemDataBound(Object sender, DataListItemEventArgs e)
{

    qxID = 1;//设置权限ID为1,当为0 的时候按钮的Visible 属性为 false.
    ImageButton imgE = new ImageButton();
    if(qxID=0)
    {          imgE = (ImageButton)e.Item.FindControl("ImageButton1");
          imgE.Visible = false;

     }
    else
    {
imgE = (ImageButton)e.Item.FindControl("ImageButton1");
imgE.Visible = true;
    }
}请各位大侠帮忙解答!!

解决方案 »

  1.   

    碰到你一样的问题public void FuncList_OnItemDataBound(Object sender, DataListItemEventArgs e)
    {
    if( e.Item.ItemType != ListItemType.Header&& e.Item.ItemType !=ListItemType.Footer)
    {
    加你的代码,
    }
    }
    加个判断就可以了
      

  2.   

    我的目的是当用户登录一个系统后,我先要判断用户的权限,权限分为1,2,3,4,5不同的等级
    DataList中有2个按钮,编辑 和 删除 ,当用户不具有删除权限是,也就是qxID<4时,将删除按钮隐藏,当用户的权限小于3时即qxID<3,那么该用户只具有浏览的权限,此时需要将编辑 和 删除 两个按钮隐藏!
    那么我的判断代码如下:     ImageButton imgEDIT = new ImageButton();
         ImageButton imgDEL = new ImageButton();
        if(qxID<4)
        {          imgDEL = (ImageButton)e.Item.FindControl("ImageButton1");
              imgDEL.Visible = false;

         }
        else if(qxID<3)
        {
    imgDEL = (ImageButton)e.Item.FindControl("ImageButton1");
             imgDEL.Visible = false;
             imgEDIT = (ImageButton)e.Item.FindControl("ImageButton2");
    imgEDIT.Visible = true;
        }   我在跟踪代码的过程中发现:每当程序执行到  imgDEL.Visible = false; 时就报   System.NullReferenceException: 未将对象引用设置到对象的实例。
       这样的错误!!
      

  3.   

    把你的qsID设成全局变量.
    然后在html中加入visible='<%# qxID %>'<asp:ImageButton id="ImageButton1" runat="server"  imggeUrl="edit.gif" CommandName="edit" visible='<%# qxID %>' ></asp:ImageButton>
      

  4.   

    foreach (DataGridItem dgItem in DataGrid.Items)
    {
    if (dgItem.ItemType == ListItemType.Item || dgItem.ItemType == ListItemType.AlternatingItem)
    {
    ImageButton imgE = new ImageButton();
    if (qxID=0)
    {

    imgE = (ImageButton)e.Item.FindControl("ImageButton1");
          imgE.Visible = false; }
    else
    {
    imgE = (ImageButton)e.Item.FindControl("ImageButton1");
    imgE.Visible = true;
    }
    }
    }这样试一下看可以么?
      

  5.   

    e.Item這個估計有問題.
    你跟蹤近來看看這個到底是什麽類型。