第一个问题:以前用VB.NET写过一个B/S结构的MIS系统,在DATAGRID编辑状态下的UpdateCommand事件中,通过声明一个TextBox对象变量,然后等于e.Item.Cells[i].Controls[0]取到这个TextBox对象,就可以取到对某一列修改后的值,即TextBox的值.但现在在C#中怎么也搞不定,问题是在编辑状态下,不论我怎么修改TextBox对像的内容,后台取到的还是该列的原值,高手指教?
private void dgSpSort1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//更新
TextBox txtTemp;
for(int i=3;i<e.Item.Cells.Count;i++)
{
txtTemp=(TextBox)e.Item.Cells[i].Controls[0]; this.dsSpSort.Tables["SpSort1"].Rows[e.Item.ItemIndex][i-2]=txtTemp.Text;
}
this.OraDataAdapter.Update(dsSpSort,"SpSort1");
this.dgSpSort1.EditItemIndex=-1;
this.dgSpSort1.DataBind();
}第二个问题:
就是DataGrid中点击删除按钮的确认问题,以前在VB.net中同样的方式没有一点问题,但现在在C#中就是不提示,高手再指教,代码如下:
private void dgSpSort1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//删除
dsSpSort.Tables["SpSort1"].Rows[e.Item.ItemIndex].Delete();
this.OraDataAdapter.Update(dsSpSort,"SpSort1");
this.dgSpSort1.DataBind();}private void dgSpSort1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.Item.ItemIndex>=0)
{
LinkButton btnDel;
btnDel=(LinkButton)e.Item.Cells[1].Controls[0];
btnDel.Attributes.Add("onClick","JavaScript:return confirm('确认删除该记录?');");
}
}
private void dgSpSort1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//更新
TextBox txtTemp;
for(int i=3;i<e.Item.Cells.Count;i++)
{
txtTemp=(TextBox)e.Item.Cells[i].Controls[0]; this.dsSpSort.Tables["SpSort1"].Rows[e.Item.ItemIndex][i-2]=txtTemp.Text;
}
this.OraDataAdapter.Update(dsSpSort,"SpSort1");
this.dgSpSort1.EditItemIndex=-1;
this.dgSpSort1.DataBind();
}第二个问题:
就是DataGrid中点击删除按钮的确认问题,以前在VB.net中同样的方式没有一点问题,但现在在C#中就是不提示,高手再指教,代码如下:
private void dgSpSort1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//删除
dsSpSort.Tables["SpSort1"].Rows[e.Item.ItemIndex].Delete();
this.OraDataAdapter.Update(dsSpSort,"SpSort1");
this.dgSpSort1.DataBind();}private void dgSpSort1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.Item.ItemIndex>=0)
{
LinkButton btnDel;
btnDel=(LinkButton)e.Item.Cells[1].Controls[0];
btnDel.Attributes.Add("onClick","JavaScript:return confirm('确认删除该记录?');");
}
}
断点跟踪了吗?不是IsPostBack 的问题吧?
for(int i=3;i<e.Item.Cells.Count;i++)
{
TextBox txtTemp = new TextBox();
txtTemp=(TextBox)e.Item.Cells[i].Controls[0]; this.dsSpSort.Tables["SpSort1"].Rows[e.Item.ItemIndex][i-2]=txtTemp.Text;
}
private void dgBankAccount_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{LinkButton btn=(LinkButton)e.Item.Cells[4].Controls[0];
if(btn != null)
{
btn.Attributes.Add ("onclick",
"return confirm (\"确定要删除此项记录吗?\");");
}}
-----------
ItemDataBound事件。
----------------------
allen_cn(波波)
第一个问题:确定在update执行之前,你没有重新帮定数据源
他说地对.
{
//更新
TextBox txtTemp; this.BindGrid(); for(int i=3;i<e.Item.Cells.Count;i++)
{
txtTemp=(TextBox)e.Item.Cells[i].Controls[0];
dsSpSort.Tables["SpSort1"].Rows[e.Item.ItemIndex][i-2]=txtTemp.Text;
}
OraDataAdapter.Update(dsSpSort,"SpSort1");
this.dgSpSort.EditItemIndex=-1;
this.BindGrid();
}我重新修改了UpdateCommand事件中的代码,在该事件中先执行了一下数据绑定,可以了,奇怪,我以前用Vb.net写的时候好像没有这样做绑定啊,只是在EditCommand中做了一下绑定,然后就直接在UpdateCommand中就直接取值修改了???