首先我想说的是我在问之前以找过我们CSDN的一些类似问题,但没有解决我程序的问题,所以高分提问!
问题是这样的,我想让程序判断用户的权限,来决定DataGrid的自定义按扭是否可见,可无论怎么改都提示:未将对象引用设置到对象的实例。    protected void DataGrid_Load(object sender, EventArgs e)
    {
        this.DataGrid.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.OnItemDataBound);    }
private void OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        if (Convert.ToString(Session["权限"]) == CommonConst.user)
        {
            ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Edit")).Visible = false;
            ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Delete")).Visible = false;
        }
    }

解决方案 »

  1.   

    if(Session["权限"] != null)
    {
    if (Convert.ToString(Session["权限"]) == CommonConst.user)
            {
                ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Edit")).Visible = false;
                ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Delete")).Visible = false;
            }
    }
      

  2.   

    Button b = ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Edit"));
    if( b != null )
     b.Visible = false;
      

  3.   

    到这一行时出错的
    ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Edit")).Visible = false;
      

  4.   

    Button b = ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Edit"));
    if( b != null )
     b.Visible = false;
    为什么b总是NULL
      

  5.   

    这个是说找不到Btn_Edit这个按钮控件。
    看一下你控件的名字,另外你的控件是在Grid里面的模板列里面么?
      

  6.   

    这是ASP端的按扭代码                                  <asp:TableCell Wrap="true" Width="20" Height="17" Font-Size="10" BorderWidth="1" BorderColor="#bebebe">
                                            <asp:Table runat="server" ID="Table1" Width="220">
                                                <asp:TableRow>
                                                    <asp:TableCell Wrap="true" HorizontalAlign="center">
                                                        <asp:Button ID="Btn_Edit" runat="server" Text="编辑" CommandName ="编辑" Font-Size="10px" Height="17" />
                                                        <asp:Button ID="Btn_Particular" runat="server" Text="详细" CommandName ="详细" Font-Size="10px" Height="17"  />
                                                        <asp:Button ID="Btn_Delete" runat="server" Text="删除" CommandName ="删除" Font-Size="10px" Height="17"  />
                                                        <asp:Button ID="Btn_Circulate" runat="server" Text="流通" CommandName ="流通" Font-Size="10px" Height="17"  />
                                                    </asp:TableCell>
                                                </asp:TableRow>
                                            </asp:Table>
                                        </asp:TableCell>
      

  7.   

    指定列试试e.Item.Cells[x].FindControl("Btn_Edit")
      

  8.   

    你这哪是DataGrid ,你是AspTable
      

  9.   

    我感觉问题好像出在DataGrid没有完全打开吧,好像是必须要加载完才让按扭不可见的!不知道各位高手有什么见解!这个问题困了我四个小时了,这本程序就剩下这么一个问题了!
      

  10.   

    是DataGrid中的,我只是取了按扭那部分的代码!
      

  11.   

    private void OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            if (Convert.ToString(Session["权限"]) == CommonConst.user)
            {
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
                ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Edit")).Visible = false;
                ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Delete")).Visible = false;
    }
            }
        }
      

  12.   

    问题是这样的,我想让程序判断用户的权限,来决定DataGrid的自定义按扭是否可见,可无论怎么改都提示:未将对象引用设置到对象的实例。
     protected void DataGrid_Load(object sender, EventArgs e)
        {
            this.DataGrid.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.OnItemDataBound);    }
    private void OnItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            if (Convert.ToString(Session["权限"]) == CommonConst.user)
            {
                ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Edit")).Visible = false;
                ((System.Web.UI.WebControls.Button)e.Item.FindControl("Btn_Delete")).Visible = false;
            }
        }
    ++++++++++++++++++
    呵呵,我想这个不是你写的代码的问题吧,你看一下窗体设计器生成的代码中有没有定义你所用到控件的