http://dotnet.aspx.cc/ShowDetail.aspx?id=8ADE535F-AD40-4DE3-A962-A64B4FAF12C4

解决方案 »

  1.   

    查SDK的帮助 (UpdateCommand)
    ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfSystemWebUIWebControlsDataGridClassUpdateCommandTopic.htm
      

  2.   

    Editing a Data Grid Control
    http://authors.aspalliance.com/das/editdatagrid.aspx
      

  3.   

    <%@ Page Language="vb" Debug="true" ValidateRequest="false"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <html>
    <script language="VB" runat="server">
        Dim strConn as String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".\\kk.mdb") + ";"
        Dim myConnection as New OleDbConnection (strConn)    Sub Page_Load(Src As Object, E As EventArgs)
            If Not (IsPostBack)
                BindGrid()
            End If
        End Sub    Sub BindGrid()
            Dim DS As DataSet
            Dim MyCommand As OleDbDataAdapter
            MyCommand = new OleDbDataAdapter("SELECT TOP 5 * FROM [board] ORDER BY boardid DESC", MyConnection)
            DS = new DataSet()
            MyCommand.Fill(DS, "table1")
            MyDataGrid.DataSource=DS.Tables("table1").DefaultView
            MyDataGrid.DataBind()
        End Sub
     
        Public Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs)
        MyDataGrid.ShowFooter = True
            MyDataGrid.EditItemIndex = -1
            BindGrid()      
        End Sub    Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
        MyDataGrid.ShowFooter = False
            MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
            BindGrid()
        End Sub    Public Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs)
               Dim ID As String = CType(e.Item.FindControl("lblID"), Label).Text
               Dim BoardType As String = CType(e.Item.FindControl("txtBoardType"), TextBox).Text
               Dim ReadMe As String = CType(e.Item.FindControl("txtReadMe"), TextBox).Text
               Response.write (ID & "<BR>" & BoardType & "<BR>" & ReadMe)
               UpdateRecord(id,boardtype,readme)   'Call Sub
       MyDataGrid.ShowFooter = True
       MyDataGrid.EditItemIndex = -1
               BindGrid()
        End Sub    Public Sub MyDataGrid_Delete(sender As Object, e As DataGridCommandEventArgs)
            dim i as String = CType(e.Item.FindControl("lblID"), Label).Text  
    Response.write (i)
            DeleteRecord(i)  'Call Sub
            MyDataGrid.EditItemIndex = -1
            BindGrid()      
        End Sub    Sub AddRecord(newBoardType,newReadMe)
            Dim MyCommandAdd As OleDbCommand
            Dim InsertCmd As String = "INSERT INTO board (boardtype,readme) values (@boardtype,@readme)"
            MyCommandAdd = New OleDbCommand(InsertCmd, myConnection)
            MyCommandAdd.parameters.add("@boardtype",Format(newBoardType))
            MyCommandAdd.parameters.add("@readme",Format(newReadMe))
            MyCommandAdd.Connection.Open()
            MyCommandAdd.ExecuteNonQuery()
            MyCommandAdd.Connection.Close()
        End Sub    Sub DeleteRecord(DelRecord)
            Dim MyCommandDel As OleDbCommand
            Dim InsertCmd As String = "DELETE FROM board WHERE boardid = @Id"
            MyCommandDel = New OleDbCommand(InsertCmd, myConnection)
            MyCommandDel.parameters.add("@id",DelRecord)
            MyCommandDel.Connection.Open()
            MyCommandDel.ExecuteNonQuery()
            MyCommandDel.Connection.Close()
        End Sub    Sub UpdateRecord(newID,newBoardType,newReadMe)
            Dim MyCommandDel As OleDbCommand
            Dim InsertCmd As String = "UPDATE  board SET boardtype=@boardtye,readme=@readme WHERE boardid =" & newID
            MyCommandDel = New OleDbCommand(InsertCmd, myConnection)
            MyCommandDel.parameters.add("@boardtype",newBoardType)
        MyCommandDel.parameters.add("@readme",NewReadme)
            MyCommandDel.Connection.Open()
            MyCommandDel.ExecuteNonQuery()
            MyCommandDel.Connection.Close()
        End Sub
    </script>
      

  4.   

    <body style="font: 10pt arial">
    <form runat="server" ID="editDataGrid">
    <ASP:DataGrid id="MyDataGrid" runat="server"
          Width="200"
          BackColor="#ffffff"
          BorderColor="black"
          CellPadding=3
          CellSpacing="0"
          HeaderStyle-BackColor=#ff0000
          HeaderStyle-Font-Name="arial"
          HeaderStyle-Font-Bold=True 
          HeaderStyle-Font-Size="11"
          HeaderStyle-ForeColor=#ffffff
          AlternatingItemStyle-BackColor=#ffffcc
          ItemStyle-Font-Name="arial"
          ItemStyle-Font-Size="10"
          OnCancelCommand="MyDataGrid_Cancel" 
          OnUpdateCommand="MyDataGrid_Update" 
          OnDeleteCommand="MyDataGrid_Delete"
          OnEditCommand="MyDataGrid_Edit"    
          AutoGenerateColumns="false" >
           <Columns>
            <asp:TemplateColumn HeaderText="BoardID" ItemStyle-Width="30px">
               <ItemTemplate>
                      <asp:Label ID="lblID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "boardid") %>' />
                </ItemTemplate>  
                </asp:TemplateColumn>            <asp:TemplateColumn HeaderText="BoardType">
      <ItemTemplate>
                           <asp:Label ID="lblBoardType" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "boardtype") %>' />
                      </ItemTemplate>
      <EditItemTemplate>
                         <asp:TextBox runat="server" id="txtBoardType" Text='<%# (DataBinder.Eval(Container.DataItem, "boardtype")) %>' TextMode="MultiLine" Rows="3"/>
                         <asp:RequiredFieldValidator id="reqval_BoardType" Text="Can't Null" ControlToValidate="txtBoardType" Display="Dynamic" Font-Name="arial" Font-Size="12" runat=server/>
      </EditItemTemplate>
    </asp:TemplateColumn>            <asp:TemplateColumn HeaderText="ReadMe">
      <ItemTemplate>
                           <asp:Label ID="lblReadMe" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ReadMe") %>' />
                      </ItemTemplate>
      <EditItemTemplate>
                         <asp:TextBox runat="server" id="txtReadMe" Text='<%# (DataBinder.Eval(Container.DataItem, "ReadMe")) %>' TextMode="MultiLine" Rows="3"/>
                         <asp:RequiredFieldValidator id="reqval_ReadMe" Text="Can't Null" ControlToValidate="txtReadMe" Display="Dynamic" Font-Name="arial" Font-Size="12" runat=server/>
      </EditItemTemplate>
     </asp:TemplateColumn>        <asp:EditCommandColumn
            ButtonType="PushButton" UpdateText="Update" CancelText="Cancel"
            EditText="Edit" HeaderText="Edit">
            </asp:EditCommandColumn> <asp:TemplateColumn HeaderText="Delete">
                 <ItemTemplate>
                    <asp:Button CommandName="Delete" Text="Delete" ID="btnDel" Runat="server" />
                 </ItemTemplate>
            </asp:TemplateColumn>
            </Columns>
    </ASP:DataGrid>
    </form>
    </body>
    </html>你試試吧.
      

  5.   

    private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex = e.Item.ItemIndex;
    BindGrid();
    }
      

  6.   

    Public Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs)
               Dim ID As String = CType(e.Item.FindControl("lblID"), Label).Text
               Dim BoardType As String = CType(e.Item.FindControl("txtBoardType"), TextBox).Text
               Dim ReadMe As String = CType(e.Item.FindControl("txtReadMe"), TextBox).Text
               Response.write (ID & "<BR>" & BoardType & "<BR>" & ReadMe)
               UpdateRecord(id,boardtype,readme)   'Call Sub
       MyDataGrid.ShowFooter = True
       MyDataGrid.EditItemIndex = -1
               BindGrid()
        End Sub
    这句是关键的。作用就是更新数据。如需C#代码请回复。