private void DataList1_UpdateCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)e.Item.ItemIndex就是所选的行,是个数字,从0开始

解决方案 »

  1.   

    <% @ Page Language="C#" %>
    <% @ Import Namespace="System.Data" %>
    <% @ Import Namespace="System.Data.OleDb" %>
    <Script Language="C#" Runat="Server">
    OleDbConnection MyConn;
    public void Page_Load(Object src,EventArgs e)
    {
    //连接语句
    string MyConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(".")+"..\\DataBase\\db1.mdb;";
    MyConn = new OleDbConnection(MyConnString);
    MyConn.Open(); if(!Page.IsPostBack)
    {
    BindGrid();
    }
    }
    ICollection CreateTable()
    {
    string strSel = "select * from Score";
    DataSet ds = new DataSet(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn);
    MyAdapter.Fill(ds,"Score"); return ds.Tables["Score"].DefaultView;
    }
    public void BindGrid()
    {
    score.DataSource = CreateTable();
    score.DataBind();
    }//处理Edit命令
    public void DataGrid_EditCommand(Object sender,DataGridCommandEventArgs e)
    {
    score.EditItemIndex = (int)e.Item.ItemIndex;
    BindGrid();
    }//处理Cancel命令
    public void DataGrid_CancelCommand(Object sender,DataGridCommandEventArgs e)
    {
    score.EditItemIndex = -1;
    BindGrid();
    }//处理Update命令
    public void DataGrid_UpdateCommand(Object sender,DataGridCommandEventArgs e)
    {
    //更新数据库中的信息
    string strName = e.Item.Cells[1].Text;
    int intChinese = Int32.Parse(((TextBox)e.Item.Cells[2].Controls[0]).Text);
    int intMath = Int32.Parse(((TextBox)e.Item.Cells[3].Controls[0]).Text);
    int intEnglish = Int32.Parse(((TextBox)e.Item.Cells[4].Controls[0]).Text); //更新数据库中的数据
    string strUpdate = "Update Score Set Chinese="+intChinese+",Math="+intMath+",English="+intEnglish+" Where Name='"+strName+"'";
    OleDbCommand MyComm = new OleDbCommand(strUpdate,MyConn);
    MyComm.ExecuteNonQuery();

    score.EditItemIndex = -1;
    BindGrid();}
    </script>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <form runat="server">
    <center>
    <b>演示EditCommandColumn</b>
    <asp:DataGrid id="score" runat="server"
    HeaderStyle-BackColor="#aaaadd"
    AlternatingItemStyle-BackColor="#eeeeee"
    AutoGenerateColumns="False"
    OnEditCommand="DataGrid_EditCommand"
    OnUpdateCommand="DataGrid_UpdateCommand"
    OnCancelCommand="DataGrid_CancelCommand"
    >
    <Columns>
    <asp:EditCommandColumn HeaderText="操作区" 
     EditText="编辑"
     UpdateText="更新"
     CancelText="取消"
     ButtonType="PushButton"
    />
    <asp:BoundColumn HeaderText="姓名" DataField="Name" ReadOnly="True" />
    <asp:BoundColumn HeaderText="语文" DataField="Chinese" />
    <asp:BoundColumn HeaderText="数学" DataField="Math" />
    <asp:BoundColumn HeaderText="英语" DataField="English" />
    </Columns>
    </asp:DataGrid>
    </center>
    </form>
    </body>
    </html>
      

  2.   

    <%@ Import Namespace="System.Data" %><html>
    <script language="C#" runat="server">   DataTable Cart = new DataTable();
       DataView CartView;      void Page_Load(Object sender, EventArgs e) 
       {
          DataRow dr;      if (Session["ShoppingCart"] == null) 
          {                Cart.Columns.Add(new DataColumn("Qty", typeof(String)));
             Cart.Columns.Add(new DataColumn("Item", typeof(String)));
             Cart.Columns.Add(new DataColumn("Price", typeof(String)));
             Session["ShoppingCart"] = Cart;
                
             // Create sample data.
             for (int i = 1; i <= 4; i++) 
             {
                dr = Cart.NewRow();
                if (i % 2 != 0)
                   dr[0] = "2";
                else
                   dr[0] = "1";
                dr[1] = "Item " + i.ToString();
                dr[2] = (1.23 * (i + 1)).ToString();
                Cart.Rows.Add(dr);
             }
          }
          else
             Cart = (DataTable)Session["ShoppingCart"];                CartView = new DataView(Cart);
          CartView.Sort="Item";      if (!IsPostBack)
             BindGrid(); 
                      
       }   void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) 
       {
          MyDataGrid.EditItemIndex = e.Item.ItemIndex;
          BindGrid();
       }   void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
       {
          MyDataGrid.EditItemIndex = -1;
          BindGrid();
       }   void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
       {
          // For bound columns, the edited value is stored in a TextBox.
          // The TextBox is the 0th element in the column's cell.
          TextBox qtyText = (TextBox)e.Item.Cells[2].Controls[0];
          TextBox priceText = (TextBox)e.Item.Cells[3].Controls[0];      String item = e.Item.Cells[1].Text;
          String qty = qtyText.Text;
          String price = priceText.Text;
           
          DataRow dr;      // With a database, use an update command to update the data. Because 
          // the data source in this example is an in-memory DataTable, delete the 
          // old row and replace it with a new one.      // Remove old entry.
          CartView.RowFilter = "Item='" + item + "'";
          if (CartView.Count > 0)
             CartView.Delete(0);
          CartView.RowFilter = "";      // Add new entry.
          dr = Cart.NewRow();
          dr[0] = qty;
          dr[1] = item;
          dr[2] = price;
          Cart.Rows.Add(dr);      MyDataGrid.EditItemIndex = -1;
          BindGrid();
       }   void BindGrid() 
       {
          MyDataGrid.DataSource = CartView;
          MyDataGrid.DataBind();
       }</script><body>   <form runat="server">      <h3>EditCommandColumn Example</h3>      <asp:DataGrid id="MyDataGrid" runat="server"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               Font-Name="Verdana"
               Font-Size="8pt"
               HeaderStyle-BackColor="#aaaadd"
               OnEditCommand="MyDataGrid_Edit"
               OnCancelCommand="MyDataGrid_Cancel"
               OnUpdateCommand="MyDataGrid_Update"
               AutoGenerateColumns="false">         <Columns>            <asp:EditCommandColumn
                     EditText="Edit"
                     CancelText="Cancel"
                     UpdateText="Update"
                     ItemStyle-Wrap="false"
                     HeaderText="Edit Command Column"
                     HeaderStyle-Wrap="false"/>            <asp:BoundColumn HeaderText="Item" 
                     ReadOnly="true" 
                     DataField="Item"/>            <asp:BoundColumn HeaderText="Quantity" 
                     DataField="Qty"/>            <asp:BoundColumn HeaderText="Price" 
                     DataField="Price"/>         </Columns>      </asp:DataGrid>   </form></body>
    </html>