以前也一直用过datagrid的编辑功能也没有出现过这个错误,这次用了发现在点击完“编辑”后传递给dgColumn_UpdateCommand()值是最初原始的,不是修改守的数据,如将名字从11更改成22,但传给updatecommand()还是11。查了半天没有找到原因。恳请哪位大侠指点一下!在线等待!private void dgColumn_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string strName = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
string strSeq_id = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL_U = "Update class Set name='" + strName + "',seq_id = " + Int32.Parse(strSeq_id) + " where id =" + Int32.Parse(dgColumn.DataKeys[e.Item.ItemIndex].ToString()); OleDbCommand objComm = new OleDbCommand(strSQL_U,objConn);
objConn.Open();
objComm.ExecuteNonQuery();
objConn.Close();
dgColumn.EditItemIndex = -1;
BindGrid();
}private void BindGrid()
{
strSQL = "SELECT id,name,seq_id FROM class order by seq_id";
OleDbConnection objConn = new OleDbConnection(strConn);
OleDbCommand objComm = new OleDbCommand(strSQL,objConn);
objConn.Open();
OleDbDataReader dr = null;
dr = objComm.ExecuteReader();
dgColumn.DataSource = dr;
dgColumn.DataKeyField = "id";
dgColumn.DataBind();
dr.Close();
objConn.Close();
}
datagrid的属性如下:<asp:datagrid id="dgColumn" runat="server" Width="100%" ShowHeader="True" AutoGenerateColumns="False" CellPadding="1" EditItemStyle-Wrap="False" BorderColor="#404040">
<EditItemStyle Wrap="False"></EditItemStyle>
<HeaderStyle Font-Bold="True" Wrap="False" HorizontalAlign="Center" ForeColor="#004040" VerticalAlign="Middle" BackColor="OldLace"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="id" HeaderText="ID" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="name" HeaderText="栏目名称" ReadOnly="False"></asp:BoundColumn>
<asp:BoundColumn DataField="seq_id" HeaderText="排列序号" ReadOnly="False"></asp:BoundColumn>
<asp:EditCommandColumn HeaderText="修改" ButtonType="LinkButton" UpdateText="修改" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn HeaderText="删除" Text="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp:datagrid>
{
string strName = ((TextBox)e.Item.Cells[1].Controls[0]).Text;
string strSeq_id = ((TextBox)e.Item.Cells[2].Controls[0]).Text;
OleDbConnection objConn = new OleDbConnection(strConn);
string strSQL_U = "Update class Set name='" + strName + "',seq_id = " + Int32.Parse(strSeq_id) + " where id =" + Int32.Parse(dgColumn.DataKeys[e.Item.ItemIndex].ToString()); OleDbCommand objComm = new OleDbCommand(strSQL_U,objConn);
objConn.Open();
objComm.ExecuteNonQuery();
objConn.Close();
dgColumn.EditItemIndex = -1;
BindGrid();
}private void BindGrid()
{
strSQL = "SELECT id,name,seq_id FROM class order by seq_id";
OleDbConnection objConn = new OleDbConnection(strConn);
OleDbCommand objComm = new OleDbCommand(strSQL,objConn);
objConn.Open();
OleDbDataReader dr = null;
dr = objComm.ExecuteReader();
dgColumn.DataSource = dr;
dgColumn.DataKeyField = "id";
dgColumn.DataBind();
dr.Close();
objConn.Close();
}
datagrid的属性如下:<asp:datagrid id="dgColumn" runat="server" Width="100%" ShowHeader="True" AutoGenerateColumns="False" CellPadding="1" EditItemStyle-Wrap="False" BorderColor="#404040">
<EditItemStyle Wrap="False"></EditItemStyle>
<HeaderStyle Font-Bold="True" Wrap="False" HorizontalAlign="Center" ForeColor="#004040" VerticalAlign="Middle" BackColor="OldLace"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="id" HeaderText="ID" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="name" HeaderText="栏目名称" ReadOnly="False"></asp:BoundColumn>
<asp:BoundColumn DataField="seq_id" HeaderText="排列序号" ReadOnly="False"></asp:BoundColumn>
<asp:EditCommandColumn HeaderText="修改" ButtonType="LinkButton" UpdateText="修改" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn HeaderText="删除" Text="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp:datagrid>
string strSQL_U = "Update class Set [name]='" + strName + "',seq_id = " + Int32.Parse(strSeq_id) + " where id =" + Int32.Parse(dgColumn.DataKeys[e.Item.ItemIndex].ToString());