<%@ 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>
<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>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货