下面是我利用DataGrid控件编辑数据的程序,但不知道为什么第一次更新的时候数据实现不了,然后再回到更新状态下,再点击更新,又能实现数据的更新,谢谢各位帮我回答
<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server"> private void BindGrid()
{
string strConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("../chat/score.mdb");
OleDbConnection myConnection=new OleDbConnection();
myConnection.ConnectionString=strConn;
string cmd="Select * from score";
OleDbDataAdapter da=new OleDbDataAdapter(cmd,myConnection);
DataSet ds=new DataSet();
da.Fill(ds,"list");
DataGrid1.DataSource=ds.Tables["list"].DefaultView;
DataGrid1.DataBind();
}
private void Page_Load(Object Sender,EventArgs E)
{
if(!IsPostBack)
{
BindGrid();
}
}
private void DataGrid1_EditCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
BindGrid();
}
private void DataGrid1_CancelCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
DataGrid1.DataBind();
}
private void DataGrid1_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int ID=(int) DataGrid1.DataKeys[(int)e.Item.ItemIndex];
string strConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("../chat/score.mdb");
OleDbConnection myConnection=new OleDbConnection();
myConnection.ConnectionString=strConn;
string strUpdate="";
strUpdate+="stuID='"+((TextBox)e.Item.Cells[2].Controls[0]).Text+"'";
strUpdate+=",name='"+((TextBox)e.Item.Cells[3].Controls[0]).Text+"'";
strUpdate+=",chn="+((TextBox)e.Item.Cells[4].Controls[0]).Text;
strUpdate+=",math="+((TextBox)e.Item.Cells[5].Controls[0]).Text;
strUpdate+=",eng="+((TextBox)e.Item.Cells[6].Controls[0]).Text;
strUpdate+=",political="+((TextBox)e.Item.Cells[7].Controls[0]).Text;
string updateCmd="UPDATE score set "+strUpdate+" where ID="+ID;
OleDbCommand myCommand=new OleDbCommand(updateCmd,myConnection); myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
DataGrid1.EditItemIndex=-1; BindGrid();
} void DataGrid1_SelectedIndexChanged(object sender, EventArgs e) { }</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p>
<asp:Label id="Label1" runat="server">更新数据实例</asp:Label>
</p>
<p>
<asp:DataGrid id="DataGrid1" runat="server" DataKeyField="ID" OnUpdateCommand="DataGrid1_UpdateCommand" OnCancelCommand="DataGrid1_CancelCommand" OnEditCommand="DataGrid1_EditCommand" Width="136px">
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="EditCommand" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
</p>
<!-- Insert content here -->
</form>
</body>
</html>
<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server"> private void BindGrid()
{
string strConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("../chat/score.mdb");
OleDbConnection myConnection=new OleDbConnection();
myConnection.ConnectionString=strConn;
string cmd="Select * from score";
OleDbDataAdapter da=new OleDbDataAdapter(cmd,myConnection);
DataSet ds=new DataSet();
da.Fill(ds,"list");
DataGrid1.DataSource=ds.Tables["list"].DefaultView;
DataGrid1.DataBind();
}
private void Page_Load(Object Sender,EventArgs E)
{
if(!IsPostBack)
{
BindGrid();
}
}
private void DataGrid1_EditCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
BindGrid();
}
private void DataGrid1_CancelCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex=-1;
DataGrid1.DataBind();
}
private void DataGrid1_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int ID=(int) DataGrid1.DataKeys[(int)e.Item.ItemIndex];
string strConn="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+Server.MapPath("../chat/score.mdb");
OleDbConnection myConnection=new OleDbConnection();
myConnection.ConnectionString=strConn;
string strUpdate="";
strUpdate+="stuID='"+((TextBox)e.Item.Cells[2].Controls[0]).Text+"'";
strUpdate+=",name='"+((TextBox)e.Item.Cells[3].Controls[0]).Text+"'";
strUpdate+=",chn="+((TextBox)e.Item.Cells[4].Controls[0]).Text;
strUpdate+=",math="+((TextBox)e.Item.Cells[5].Controls[0]).Text;
strUpdate+=",eng="+((TextBox)e.Item.Cells[6].Controls[0]).Text;
strUpdate+=",political="+((TextBox)e.Item.Cells[7].Controls[0]).Text;
string updateCmd="UPDATE score set "+strUpdate+" where ID="+ID;
OleDbCommand myCommand=new OleDbCommand(updateCmd,myConnection); myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
DataGrid1.EditItemIndex=-1; BindGrid();
} void DataGrid1_SelectedIndexChanged(object sender, EventArgs e) { }</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p>
<asp:Label id="Label1" runat="server">更新数据实例</asp:Label>
</p>
<p>
<asp:DataGrid id="DataGrid1" runat="server" DataKeyField="ID" OnUpdateCommand="DataGrid1_UpdateCommand" OnCancelCommand="DataGrid1_CancelCommand" OnEditCommand="DataGrid1_EditCommand" Width="136px">
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="EditCommand" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
</p>
<!-- Insert content here -->
</form>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货