<%@ Import Namespace="System.Data" %><html>
 <script language="C#" runat="server">    DataTable Cart;
    DataView CartView;    void Page_Load(Object sender, EventArgs e) {
        if (Session["DG6_ShoppingCart"] == null)     {
            Cart = new DataTable();
            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["DG6_ShoppingCart"] = Cart;            // 第一次加载 -- 预填充一些数据
            for (int i=1; i<5; i++) {
                DataRow dr = Cart.NewRow();
                dr[0] = ((int)(i%2)+1).ToString();
                dr[1] = "项 " + i.ToString();
                dr[2] = ((double)(1.23 * (i+1))).ToString();
                Cart.Rows.Add(dr);
            }
        }
        else {
            Cart = (DataTable)Session["DG6_ShoppingCart"];
        }        CartView = new DataView(Cart);
        CartView.Sort = "Item";
        if (!IsPostBack) {
            BindGrid();
        }
    }    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) {
        MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
        BindGrid();
    }    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) {
        MyDataGrid.EditItemIndex = -1;
        BindGrid();
    }    public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) {
        // 对于绑定列,编辑的值存储在文本框中,
        // 文本框是列单元格中的第零个元素
        string item = e.Item.Cells[1].Text;
        string qty = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
        string price = ((TextBox)e.Item.Cells[3].Controls[0]).Text;        // 对于数据库,我们应使用一条更新命令。因为我们使用
        // 内存内数据表,所以我们将删除旧行并用新行替换它
        //移除旧项
        CartView.RowFilter = "Item='"+item+"'";
        if (CartView.Count > 0) {
            //项在 cart 中
            CartView.Delete(0);
        }
        CartView.RowFilter = "";        //添加新项
        DataRow dr = Cart.NewRow();
        dr[0] = qty;
        dr[1] = item;
        dr[2] = price;
        Cart.Rows.Add(dr);        MyDataGrid.EditItemIndex = -1;
        BindGrid();
    }    public void BindGrid() {
        MyDataGrid.DataSource = CartView;
        MyDataGrid.DataBind();
    }</script><body style="font: 10.5pt 宋体">  <form runat="server">    <h3><font face="宋体">在 DataGrid 中使用编辑命令列</font></h3>    <asp:DataGrid id="MyDataGrid" runat="server"
        BorderColor="black"
        BorderWidth="1"
        CellPadding="3"
        Font-Name="宋体"
        Font-Size="8pt"
        HeaderStyle-BackColor="#aaaadd"
        OnEditCommand="MyDataGrid_Edit"
        OnCancelCommand="MyDataGrid_Cancel"
        OnUpdateCommand="MyDataGrid_Update"
        AutoGenerateColumns="false"
        >        <Columns>
            <asp:EditCommandColumn
                EditText="编辑"
                CancelText="取消"
                UpdateText="更新"
                ItemStyle-Wrap="false"
                HeaderText="编辑命令列"
                HeaderStyle-Wrap="false"
                />
            <asp:BoundColumn HeaderText="项" ReadOnly="true" DataField="Item"/>
            <asp:BoundColumn HeaderText="数量" DataField="Qty"/>
            <asp:BoundColumn HeaderText="价格" DataField="Price"/>
        </Columns>
    </asp:DataGrid>  </form></body>
</html>