如题,更新按钮是自定义的,代码如下:
<asp:GridView.............................
    <Columns>
        <asp:ButtonField CommandName="edit" Text="更新" />
               .
               .
               .
     </Columns>
    
</asp:GridView>另,有哪位大人知道为什么以下代码无效:
   protected void grdTest_ItemDataBound(object sender,DataGridItemEventArgs e)
    {
        
        Button btn = (Button)e.Item.FindControl("btnDelete");
       btn.Attributes.Add("onclick","javascript:return confirm('确定刪除嗎﹖');");
       
    }
错误提示如下:
System.NullReferenceException: 未将对象引用设置到对象的实例急用,希望大人们在48小时内给答案!!
先拜谢.

解决方案 »

  1.   

    忘了说了,Control Language = c#
      

  2.   

    Button btn = (Button)e.Item.FindControl("btnDelete");
    没有得到对象吧
    跟踪一下看看
      

  3.   

    Button btn = (Button)e.Item.FindControl("btnDelete");
         if(btn!= null)
       {
           btn.Attributes.Add("onclick","javascript:return confirm('确定刪除嗎﹖');");
    }
      

  4.   

    因为grdTest_ItemDataBound中的e.Item有可能是header,footer.或者要可先判断
    e.Item.ItemType
      

  5.   

    protected void grdTest_ItemDataBound(object sender,DataGridItemEventArgs e)
    {
    System.Web.UI.WebControls.LinkButton lk=(System.Web.UI.WebControls.LinkButton)e.Item.Cells[5].FindControl("LinkButton2");
    lk.Attributes.Add("onclick","javascript:return confirm('提示:您确定要删除此项吗?');");
    }
      

  6.   

    protected void grdTest_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
    ButtonField 的类型为Button就是下面这样,如果为Link类型就把Button改成Link,如果是image就改成image类型
                    Button btn = (Button)e.Row.Cells[5].Controls[0]; //cells[5]表示你这个删除按钮在第五列;
                    btn.Attributes.Add("onclick", "javascript:return confirm('你确认要删除该数据吗?')");            }
            }
      

  7.   

    gridview应该没有ItemDataBound吧,上上面的??
      

  8.   

    protected void grdTest_ItemDataBound(object sender,DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
            Button btn = (Button)e.Item.FindControl("btnDelete");
            btn.Attributes.Add("onclick","javascript:return confirm('确定刪除嗎﹖');");
            }
        }幕白正解~
      

  9.   

    ButtonField 没有ID的,只有类型ButtonType,三种类型按钮
      

  10.   

    谢谢各位大侠的回答,我在网上找了一天都没找到答案,结果CSDN五分钟就搞掂了。jackysun2000(凡人之学,不日进,则日退!) 大人的答案运行正确。非常感谢!!job_2006(初学.net) 大人的代码提示信息如下:异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。
    参数名: index源错误: 
    行 41:     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    行 42:     {
    行 43:         Button btn = (Button)e.Row.Cells[1].Controls[0];
    行 44:         btn.Attributes.Add("onclick  ", "javascript:return  confirm('你确认要删除该数据吗?')  ");  
    行 45:     }
     
    请问原因是什么?
      

  11.   

    加上这个:  if (e.Row.RowType == DataControlRowType.DataRow)
     {}
    试试
      

  12.   

    我觉得应该加在ItemCreated事件中
      

  13.   

    see:
    http://huobazi.cnblogs.com/archive/2004/04/05/DataGridDeleteConfirm.html
      

  14.   

    再次谢谢job_2006(初学.net) 大人的回复
    提示是一样的。
    我想说不定是类型不对。
    可是好像没有Link类型,只有LinkButton,但也不对。分完分后好像就只能直接结贴啦,所以各位大人不好意思。我没有办法先散分。