书上写的在UpdateCommand事件处理中用((TextBox)e.Item.Cells[1].Controls[0]).Text得到修改后的值,但是我用的时候跟踪发现取到的是“原来的值”,用e.Item.Cells[1].Text取得的也是原值,希望大家帮忙分析
<asp:DataGrid id="dg" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="id" ReadOnly="True" HeaderText="标识"></asp:BoundColumn>
<asp:BoundColumn DataField="title" HeaderText="标题"></asp:BoundColumn>
<asp:BoundColumn DataField="url" HeaderText="地址"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
<asp:DataGrid id="dg" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="id" ReadOnly="True" HeaderText="标识"></asp:BoundColumn>
<asp:BoundColumn DataField="title" HeaderText="标题"></asp:BoundColumn>
<asp:BoundColumn DataField="url" HeaderText="地址"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
{
// 在此处放置用户代码以初始化页面
//加载数据库连接配置
string sqlServerName=ConfigurationSettings.AppSettings["SqlServerName"];
string uid=ConfigurationSettings.AppSettings["uid"];
string pws=ConfigurationSettings.AppSettings["pws"];
string dbname=ConfigurationSettings.AppSettings["DBName"];
string strConn="server="+sqlServerName+";uid="+uid+";pwd="+pws+";database="+dbname;
sqlConn.ConnectionString=strConn;
string lrow="";
if(this.IsPostBack)
{
lrow=crow.Value;
}
else
{
lrow=Request.Form["crow"].ToString();
crow.Value=lrow;
}
//检验row有效性
if (lrow==null || lrow.Equals(""))
{
Response.Redirect("first.aspx");
}
try
{
sqlConn.Open();
}
catch
{
Response.Write("数据库打开错误,请检查数据库服务器是否正常运行;");
} string sql="SELECT * FROM [TitleInfo] where cid="+lrow.ToString();
try
{
SqlDataAdapter sda=new SqlDataAdapter(sql,sqlConn);
DataSet ds=new DataSet();
sda.Fill(ds,"Title");
DataTable dt=ds.Tables["Title"];
dg.DataSource=ds.Tables["Title"].DefaultView;
dg.DataBind();
}
catch
{
Response.Write("数据库操作出错了!");
}
sqlConn.Close();
}
private void dg_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg.EditItemIndex=(int)e.Item.ItemIndex;
dg.DataBind();
}
private void dg_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string ltitle,lurl;
int len,curLen;
string sql;
ltitle=((TextBox)e.Item.Cells[1].Controls[0]).Text;
//string title=e.Item.Cells[1].Text;
lurl=((TextBox)e.Item.Cells[2].Controls[0]).Text;
//int id=e.Item.ItemIndex;//得到当前行
string id=e.Item.Cells[0].Text;//得到当前行的某个值 try
{
sqlConn.Open();
}
catch
{
Response.Write("数据库打开错误,请检查数据库服务器是否正常运行;");
} SqlCommand sqlComm=new SqlCommand();
sqlComm.Connection=sqlConn;
try
{
sql="update [TitleInfo] set title='"+ltitle+"',url='"+lurl+"' where id="+id;
sqlComm.CommandText=sql;
sqlComm.ExecuteNonQuery();
hint.Text="修改成功";
dg.EditItemIndex=-1;
}
catch
{
hint.Text="修改不成功,对数据库操作产生错误;";
}
sqlConn.Close();
}
再次绑定数据到DataGrid
你应该把绑定数据那部分写成一个方法在很多地方都要用的,比如编辑,分页后