datagird表格 <asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" BorderColor="#ADAAAD" ShowFooter="True" Width="255px" oncancelcommand="DataGrid1_CancelCommand" ondeletecommand="DataGrid1_DeleteCommand" oneditcommand="DataGrid1_EditCommand" onupdatecommand="DataGrid1_UpdateCommand"> <AlternatingItemStyle BackColor="#EFEFEF"></AlternatingItemStyle> <ItemStyle BackColor="White"></ItemStyle> <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#00659C"></HeaderStyle> <Columns> <asp:BoundColumn DataField="recordid" HeaderText="单据编号"> <HeaderStyle Wrap="False"></HeaderStyle> <ItemStyle Wrap="False"></ItemStyle> </asp:BoundColumn> <asp:BoundColumn DataField="depotcode" HeaderText="仓库编码"> <HeaderStyle Wrap="False" ForeColor="White"></HeaderStyle> <ItemStyle Wrap="False"></ItemStyle> </asp:BoundColumn> <asp:BoundColumn DataField="batchno" HeaderText="样品批号"> <HeaderStyle Wrap="False" ForeColor="White"></HeaderStyle> <ItemStyle Wrap="False"></ItemStyle> </asp:BoundColumn> <asp:BoundColumn DataField="SampleID" HeaderText="样品编码"> <HeaderStyle Wrap="False" ForeColor="White"></HeaderStyle> <ItemStyle Wrap="False"></ItemStyle> </asp:BoundColumn> <asp:BoundColumn DataField="remain" HeaderText="数量"> <HeaderStyle Wrap="False" ForeColor="White"></HeaderStyle> <ItemStyle Wrap="False"></ItemStyle> </asp:BoundColumn> <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"> <HeaderStyle Wrap="False"></HeaderStyle> </asp:EditCommandColumn> <asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn> </Columns> <PagerStyle Mode="NumericPages"></PagerStyle> </asp:datagrid> 后台执行语句 protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { ViewState["dt"] = GetDataTable(); } } /// <summary> /// 创建临时表 /// </summary> /// <returns></returns> public DataTable GetDataTable() { //建表 DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn( "recordid", typeof(string))); dt.Columns.Add(new DataColumn( "depotcode", typeof(string))); dt.Columns.Add(new DataColumn( "batchno", typeof(string))); DataColumn SampColumn= dt.Columns.Add( "SampleID", typeof(string)); dt.Columns.Add(new DataColumn( "remain", typeof(decimal))); dt.PrimaryKey = new DataColumn[] { SampColumn }; //设置主键 return dt; } /// <summary> /// 取消 /// </summary> /// <param name="source"></param> /// <param name="e"></param> protected void DataGrid1_CancelCommand(object source, DataGridCommandEventArgs e) { DataGrid1.EditItemIndex = -1; DataGrid1.DataSource = (DataTable)ViewState["dt"]; DataGrid1.DataBind(); } /// <summary> /// 删除 /// </summary> /// <param name="source"></param> /// <param name="e"></param> protected void DataGrid1_DeleteCommand(object source, DataGridCommandEventArgs e) { DataTable dt=(DataTable)ViewState["dt"]; DataRow dr = dt.Rows.Find(e.Item.Cells[3].Text); dt.Rows.Remove(dr); ViewState["dt"] = dt; DataGrid1.DataSource = (DataTable)ViewState["dt"]; DataGrid1.DataBind(); } /// <summary> /// 编辑 /// </summary> /// <param name="source"></param> /// <param name="e"></param> protected void DataGrid1_EditCommand(object source, DataGridCommandEventArgs e) { ViewState["Sample"] = e.Item.Cells[3].Text; DataGrid1.EditItemIndex = e.Item.ItemIndex; DataGrid1.DataSource = (DataTable)ViewState["dt"]; DataGrid1.DataBind(); } /// <summary> /// 更新 /// </summary> /// <param name="source"></param> /// <param name="e"></param> protected void DataGrid1_UpdateCommand(object source, DataGridCommandEventArgs e) { DataTable dt = (DataTable)ViewState["dt"]; DataRow dr = dt.Rows.Find(ViewState["Sample"].ToString()); dr[0] =((TextBox)e.Item.Cells[0].Controls[0]).Text; dr[1] = ((TextBox)e.Item.Cells[1].Controls[0]).Text; dr[2] = ((TextBox)e.Item.Cells[2].Controls[0]).Text; dr[3] = ((TextBox)e.Item.Cells[3].Controls[0]).Text; dr[4] = ((TextBox)e.Item.Cells[4].Controls[0]).Text; ViewState["dt"] = dt; DataGrid1.EditItemIndex = -1; DataGrid1.DataSource = (DataTable)ViewState["dt"]; DataGrid1.DataBind(); } 组合主键 DataTable tb = new DataTable(); tb.PrimaryKey = new DataColumn[] { tb.Columns[ "F1 "], tb.Columns[ "F2 "] };