下面是我利用DataGrid控件编辑数据的程序,但不知道为什么第一次更新的时候数据实现不了,然后再回到更新状态下,再点击更新,又能实现数据的更新,谢谢各位帮我回答
<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">    private void BindGrid()
       {
         string strConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("../chat/score.mdb");
         OleDbConnection myConnection=new OleDbConnection();
         myConnection.ConnectionString=strConn;
         string cmd="Select * from score";
         OleDbDataAdapter da=new OleDbDataAdapter(cmd,myConnection);
         DataSet ds=new DataSet();
         da.Fill(ds,"list");
         DataGrid1.DataSource=ds.Tables["list"].DefaultView;
         DataGrid1.DataBind();
       }
      private void Page_Load(Object Sender,EventArgs E)
    {
       if(!IsPostBack)
       {
        BindGrid();
       }
    }
       private void DataGrid1_EditCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
       {
        DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
        BindGrid();
       }
       private void DataGrid1_CancelCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
       {
         DataGrid1.EditItemIndex=-1;
         DataGrid1.DataBind();
       }
       private void DataGrid1_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
       {
        int ID=(int) DataGrid1.DataKeys[(int)e.Item.ItemIndex];
        string strConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("../chat/score.mdb");
         OleDbConnection myConnection=new OleDbConnection();
         myConnection.ConnectionString=strConn;
        string strUpdate="";
        strUpdate+="stuID='"+((TextBox)e.Item.Cells[2].Controls[0]).Text+"'";
        strUpdate+=",name='"+((TextBox)e.Item.Cells[3].Controls[0]).Text+"'";
        strUpdate+=",chn="+((TextBox)e.Item.Cells[4].Controls[0]).Text;
        strUpdate+=",math="+((TextBox)e.Item.Cells[5].Controls[0]).Text;
        strUpdate+=",eng="+((TextBox)e.Item.Cells[6].Controls[0]).Text;
        strUpdate+=",political="+((TextBox)e.Item.Cells[7].Controls[0]).Text;
        string updateCmd="UPDATE score set "+strUpdate+" where ID="+ID;
        OleDbCommand myCommand=new OleDbCommand(updateCmd,myConnection);            myCommand.Connection.Open();
            myCommand.ExecuteNonQuery();
                  DataGrid1.EditItemIndex=-1;               BindGrid();
       }    void DataGrid1_SelectedIndexChanged(object sender, EventArgs e) {    }</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p>
            <asp:Label id="Label1" runat="server">更新数据实例</asp:Label>
        </p>
        <p>
            <asp:DataGrid id="DataGrid1" runat="server" DataKeyField="ID" OnUpdateCommand="DataGrid1_UpdateCommand" OnCancelCommand="DataGrid1_CancelCommand" OnEditCommand="DataGrid1_EditCommand" Width="136px">
                <Columns>
                    <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="EditCommand" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
                </Columns>
            </asp:DataGrid>
        </p>
        <!-- Insert content here -->
    </form>
</body>
</html>