Datalist的代码: 
<asp:datalist  id="mydatalist" 
cellpadding=10 
cellspacing=0 
gridlines="both" 
runat="server" 
repeatdirection="horizontal" 
datakeyfield="id" 
oneditcommand="editedit" 
oncancelcommand="canceledit" 
onupdatecommand="updateedit" 
ondeletecommand="deleteedit" 
OnItemCreated="DataGrid_ItemCreated"  > 
   <itemtemplate> 
   <td><%# whatstring(container.dataitem("myname"))%></td><td><%# whatstring(container.dataitem("mytext"))%></td><td><asp:linkbutton text="编辑" commandname="edit" runat=server /></td> 
   </itemtemplate> 
   <edititemtemplate> 
      姓名:<asp:textbox id="editname" text='<%# whatstring(container.dataitem("myname"))%>' runat=server /><BR> 
      留言:<asp:textbox id="edittext" text='<%# whatstring(container.dataitem("mytext"))%>' runat=server /><BR> 
      <asp:button text="更新" commandname="update" runat=server /> 
      <asp:button text="删除" commandname="delete" runat=server id="Button1"/> 
      <asp:button text="取消" commandname="cancel" runat=server  /> 
       
   </edititemtemplate> 
</asp:datalist> 
+++++++++++++++++++++++++++++++ 
我问了,有人回答如下: 
方法(1)在Page_load中加入Button1.Attributes.Add("OnClick", "Javascript:return confirm('这里填入你想写的内容');") 
这句话,但明显不行,因为Page_load的时候Button1还不存在 
方法(2) 
用这个 
Sub DataGrid_ItemCreated(Sender As Object, e As DatalistItemEventArgs)         Select Case e.Item.ItemType 
            Case ListItemType.Item, ListItemType.AlternatingItem 
        Dim myDeleteButton As Button 
         myDeleteButton = e.Item.FindControl("button1") 
         myDeleteButton.Attributes.Add("onclick","return confirm('Are you Sure you want to delete this company?');")         End Select     End Sub 
可是出错: 
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 
指示这行:myDeleteButton.Attributes.Add("onclick","return confirm('Are you Sure you want to delete this record?');") 求求高手来救救我吧!!

解决方案 »

  1.   

    Sub DataGrid_ItemCreated(Sender As Object, e As DatalistItemEventArgs)         if e.Item.ItemType = ListItemType.Edit then
            Dim myDeleteButton As Button 
             myDeleteButton = e.Item.FindControl("button1") 
             myDeleteButton.Attributes.Add("onclick","return confirm('Are you Sure you want to delete this company?');")         End if    End Sub 
      

  2.   

    DataGrid_ItemCreated内要判断 当前的DataGridItem
    也就是 e.Item.ItemType 是ListItemType.Item或者交替列 才可以
    否则 在header内没有button
             myDeleteButton = e.Item.FindControl("button1") 
    的结果就是null
    也就是 未将对象饮用设置到对象的实例了
    应该if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
    {
    Button btn = e.Item.Findcontrol("btnId") as Button;
    if( btn != null)
    {
    btn.attributes["onclick"] = "return confirm('xx');";
    }
      

  3.   

    因为这些按钮都是放在<edititemtemplate>里的,所以要当前行处于编辑状态时才可以找到
      

  4.   

    不用这么麻烦吧? 
    button不是由clientonclick事件么?
    ClientOnClick="return confirm('xx')"
    服务器端的button完全可以写一个client click事件,再写一个server的click事件,完全不冲突。
      

  5.   

    在 DataGrid_ItemCreated 内
    if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
    {
        ((Button)e.Item.FindControl["xx"]).Attributes.Add("onclick", "return confirm('这里填入你想写的内容');") ;
    }
      

  6.   

    2005下ClientOnClick="return confirm('xx')"
    2003下
    if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
    {
    Button btn = e.Item.Findcontrol("btnId") as Button;
    if( btn != null)
    {
    btn.attributes["onclick"] = "return confirm('xx');";
    }
      

  7.   

    //****ItmeDataBound事件加入下面代码//****获取删除按钮
    Button butDel=(Button)e.Item.FindControl("butdel");butDel.Attributes.add("onclick","javascript:if(confirm('Do Your Delete Recored!')==false) return false;");
      

  8.   

    Eddie005(♂) 暴赱 『零零伍』(︶︵︶) 
    Sub DataGrid_ItemCreated(Sender As Object, e As DatalistItemEventArgs)         if e.Item.ItemType = ListItemType.Edit then
            Dim myDeleteButton As Button 
             myDeleteButton = e.Item.FindControl("button1") 
             myDeleteButton.Attributes.Add("onclick","return confirm('Are you Sure you want to delete this company?');")         End if    End Sub 
    +++++++++++++++++++++++++++Compiler Error Message: BC30456: 'Edit' is not a member of 'System.Web.UI.WebControls.ListItemType'.Source Error: Line 120:Sub DataGrid_ItemCreated(Sender As Object, e As DatalistItemEventArgs) 
    Line 121:
    Line 122:        if e.Item.ItemType = ListItemType.Edit then
    Line 123:        Dim myDeleteButton As Button 
    Line 124:         myDeleteButton = e.Item.FindControl("button1") 
    错误指向if e.Item.ItemType = ListItemType.Edit then
      

  9.   

    xiahouwen(武眉博<活靶子.NET>) 
    很感谢你的回复,可是我的标题表明了需要vb语言,谢谢。
      

  10.   

    kolosi(小丑巴其)
    你所说的ClientOnClick="return confirm('xx')"
    完全不起作用。
      

  11.   

    zhangxiaopin(zxp) 
    不是太明白您的写法,是这样吗?
    在Datalist中加入onItmeDataBound="givebutton"
    然后在vb中
    Sub givebutton(Sender As Object, e As DatalistItemEventArgs)       Button butDel=(Button)e.Item.FindControl("button1"); butDel.Attributes.add("onclick","javascript:if(confirm('Do Your Delete Recored!')==false) return false;");
        End Sub 
    如果是这样,也出错:
    Compiler Error Message: BC30684: 'Button' is a type and cannot be used as an expression.Source Error: Line 119:Sub givebutton(Sender As Object, e As DatalistItemEventArgs) 
    Line 120:
    Line 121:      Button butDel=(Button)e.Item.FindControl("button1");
    Line 122:
    Line 123:butDel.Attributes.add("onclick","javascript:if(confirm('Do Your Delete Recored!')==false) return false;");
     
    指向121谢谢各位,加油
      

  12.   

    笔误~if e.Item.ItemType = ListItemType.EditItem then
      

  13.   

    this.cList.ItemCreated += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.cList_ItemCreated);
    private void cList_ItemCreated(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
    {
    if ((e.Item.ItemType!=ListItemType.Footer)&&(e.Item.ItemType!=ListItemType.Header)&&(e.Item.ItemType!=ListItemType.Pager)) 
    {
    Button myDelButton = (Button)e.Item.FindControl("btnDel");
    myDelButton.Attributes.Add("onclick","return confirm(' 删除该分类以及下级所有分类  \\n\\n 操作不能撤销是否继续?')");
    }
    }
    Datalist自己改一下
      

  14.   

    谢谢Eddie005(♂) 暴赱 『零零伍』(︶︵︶) 终于令我在下班前释怀,也感谢其它各位
      

  15.   

    zhangxiaopin(zxp) 
    欢迎继续讨论你的写法。
      

  16.   

    LZ是学VB的,Eddie005已经说出了思路,代码只能是借鉴,我是学C#的,看得出那是写错了
       if e.Item.ItemType = ListItemType.Edit then
    呵呵,不好意思,我直言了。