是不是你的事件代理被你对应错了?,你可以在itemcommand中跟踪一下触发事件的命令名,看到底返回的什么事件

解决方案 »

  1.   

    估计不是DataGrid精神错乱,是你的代码精神错乱。哈哈
      

  2.   

    <asp:datagrid id=DataGrid1 runat="server" Width="100%" DataSource="<%# dsUserData %>" DataKeyField="ID" DataMember="Users" AutoGenerateColumns="False" PageSize="20" AllowPaging="True">
    <Columns>
    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
    <asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
    <asp:BoundColumn DataField="ID" SortExpression="ID" ReadOnly="True" HeaderText="ID"></asp:BoundColumn>
    <asp:BoundColumn DataField="UserName" SortExpression="UserName" HeaderText="用户名"></asp:BoundColumn>
    <asp:BoundColumn DataField="UserPassWord" SortExpression="UserPassWord" HeaderText="密码"></asp:BoundColumn>
    <asp:TemplateColumn HeaderText="Email">
    <ItemTemplate>
    <asp:HyperLink id=HyperLink1 runat="server" NavigateUrl='<%# "mailto:" & DataBinder.Eval(Container, "DataItem.Email") %>' Text='<%# DataBinder.Eval(Container, "DataItem.Email") %>'>
    </asp:HyperLink>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:TextBox id=TextBox1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Email") %>'>
    </asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="删除">
    <ItemTemplate>
    <asp:CheckBox id=CheckBox1 runat="server" Checked='<%# DataBinder.Eval(Container, "DataItem.Deleted") %>'>
    </asp:CheckBox>
    </ItemTemplate>
    <EditItemTemplate>
    <asp:CheckBox id=CheckBox2 runat="server" Checked='<%# DataBinder.Eval(Container, "DataItem.Deleted") %>'>
    </asp:CheckBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:LinkButton id="LinkButton1" runat="server" Text="选择" CommandName="ShowAll" CausesValidation="false">详细</asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    <PagerStyle Position="TopAndBottom" Mode="NumericPages"></PagerStyle>
    </asp:datagrid> Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
                Dim txtUserName As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)
                Dim txtPassWord As TextBox = CType(e.Item.Cells(4).Controls(0), TextBox)
                Dim txtEmail As TextBox = CType(e.Item.Cells(5).Controls(0), TextBox)
                Dim txtClass As TextBox = CType(e.Item.Cells(6).Controls(0), TextBox)
                Dim chkDelete As CheckBox = CType(e.Item.Cells(7).Controls(1), CheckBox)
                Dim r As UserData.UsersRow
                r = dsUserData.Users.FindByID(e.Item.ID)
                With r
                    .UserName = txtUserName.Text
                    .UserPassWord = txtPassWord.Text
                    .Email = txtEmail.Text
                    .Deleted = chkDelete.Checked
                End With
                With DataGrid1
                    .EditItemIndex = -1
                    .DataBind()
                End With
            End Sub        Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
                If e.CommandName = "ShowAll" Then
                    FillTextBox(e.Item.Cells(2).Text)
                    Panel_DataGrid.Visible = False
                    Panel_Detail.Visible = True
                End If
            End Sub        Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
                With DataGrid1
                    .EditItemIndex = e.Item.ItemIndex
                    .DataBind()
                End With
            End Sub        Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
                With DataGrid1
                    .EditItemIndex = -1
                    .DataBind()
                End With
            End Sub        Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
                Dim key As String = CInt(e.Item.Cells(3).Text)
                Dim r As UserData.UsersRow
                r = dsUserData.Users.FindByID(key)
                r.Delete()
                With DataGrid1
                    .EditItemIndex = -1
                    .DataBind()
                End With
            End Sub