应该使用DataGrid 的 ItemCommand方法
根据CommandName触发对应的事件
获取用UpdateCommand方法

解决方案 »

  1.   

    to vzxq
    错误代码已经贴出来了啊,上面的就是啊
      

  2.   

    Public Sub deleter_update(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) *****
      

  3.   

    hadles
    是不报错误
    不过它都不进那段程序
    是不是呀??
    hadles ***
      

  4.   

    to rickjelly2004(rickjelly)
    你说的是对的,我就是这个情况,应该怎么解决
      

  5.   

    添加CommandName属性
    <asp:ImageButton id="deleter" ImageUrl="images/icon_delete.gif" CommandName="Update" CausesValidation="False" runat="server" AlternateText="Delete"  ImageAlign="absmiddle" BorderStyle="None" Width="19" Height="19" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "psId") %>' />
    代码:
    datagrid1.UpdateCommand+=new DataGridCommandEventHandler(datagrid1_UpdateCommand);
    } private void datagrid1_UpdateCommand(object source, DataGridCommandEventArgs e)
    {
    if (e.CommandName.ToUpper()=="UPDATE")
    {
    ………………
    }
    }
      

  6.   

    Public Sub deleter_update(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) Handles 不过我不知道你要实现什么功能
    如果说是点IMAGEBUTTON就删除什么的话
    你直接在IMAGEBUTTON点击事件中写你说你的功能呢??
      

  7.   

    当IMGBUTTON或者其他类似控件隶属于DataGrid或者DataList控件时,其本身已经不会被页面(控件)识别为控件,而成为DataGrid或DataList控件内部的东西,因此其触发的事件不能被页面或者控件本身直接接收,而是触发Datagrid或者DataList的ItemCommand事件,通过这个事件做自己想做的事。因此对imgButton设置事件是错误的,无法运行。
      

  8.   

    Public Sub deleter_update(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) Handles deleter.update
      

  9.   

    Private Sub deleter_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles deleter.Click
    Dim myConnection As New OleDbConnection(ConfigurationSettings.AppSettings("forum"))            '### FIRST GET TOPIC ID FOR REDIRECT
                Dim myCommand As New OleDbCommand("SELECT psRelBcId FROM forumThreads WHERE psId = " & e.CommandArgument, myConnection)            myConnection.Open()
                Dim psRelBcId As Integer = myCommand.ExecuteScalar()
                '### NOW DELETE THIS THREAD
                myCommand.Connection = myConnection
                myCommand.CommandText = "DELETE FROM forumThreads WHERE psId = " & e.CommandArgument            myCommand.ExecuteNonQuery()            '### NOW DELETE ALL REPLIES
                myCommand.Connection = myConnection
                myCommand.CommandText = "DELETE FROM forumThreads WHERE psRelTopId = " & e.CommandArgument            myCommand.ExecuteNonQuery()            myConnection.Close()            If myIncludes.countThreads(psRelBcId) > 0 Then
                    Response.Redirect("thread.aspx?id=" & psRelBcId)
                Else
                    Response.Redirect("topic.aspx")
                End If    End Sub
      

  10.   

    to rickjelly2004(rickjelly)但是e.CommandArgument,被系统认为不可识别,那该怎么办呢
      

  11.   

    CommandArgument='<%# DataBinder.Eval(Container.DataItem, "psId") %>'这样是不行的,你只能在的事件里判断当前行的参数,再根据参数动态生成SQL语句执行数据库的操作
      

  12.   

    to rickjelly2004(rickjelly)
    如何才能在事件里判断当前行的参数,请你举一具例子
      

  13.   

    ie中每次都是重新建立环境及对象,所以每次都执行Init,问题可能出在这
      

  14.   

    平时一般都没有用到过什么参数,你一般写一个SUB或者一个FUNCTION,你自己可以写一些参数其他的地方,我在做控件的时候可能要用到参数,定义一个事件,用参数一般就两个呀:
    ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs
    System.Web.UI.ImageClickEventArgs用到System.Web.UI。