现在做项目,遇到点儿小问题:.net2003+sql2000平台,我在对datagrid进行操作的时候(在datagrid内完成增删改查而不是在datagrid外用按钮解决),更新数据的时候,在DataGrid1_UpdateCommand()事件中我是这样写的private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
// TextBox tb1=(TextBox)e.Item.Cells[4].Controls[1];
// TextBox tb2=(TextBox)e.Item.Cells[5].Controls[1];
// TextBox tb3=(TextBox)e.Item.Cells[6].Controls[1];
// TextBox tb4=(TextBox)e.Item.Cells[7].Controls[1];
//
// decimal stampduty=decimal.Parse(tb1.Text);
// decimal handcharge=decimal.Parse(tb2.Text);
// decimal transfee=decimal.Parse(tb3.Text);
// decimal otherfee=decimal.Parse(tb4.Text);
float stampduty=float.Parse(((TextBox)e.Item.Cells[4].FindControl("TextBox1")).Text);
float handcharge=float.Parse(((TextBox)e.Item.Cells[5].FindControl("TextBox2")).Text);
float transfee=float.Parse(((TextBox)e.Item.Cells[6].FindControl("TextBox3")).Text);
float otherfee=float.Parse(((TextBox)e.Item.Cells[7].FindControl("TextBox4")).Text); string ettype=e.Item.Cells[1].Text;
int stocktype=int.Parse(e.Item.Cells[2].Text); mam.UP_tbtariff_Update(accountcode,ettype,stocktype,stampduty,handcharge,transfee,otherfee,DateTime.Now);

this.DataGrid1.EditItemIndex=-1;

GridBinds(); }
每当程序执行到decimal或者float句的时候都抛出“输入字符串的格式不正确。”的错误异常,我的数据库里用的是smallmoney类型的接受传入的float或者decimal,这样应该没什么问题,似乎,我并不能从模板列中获取更新后的TextBox的值,因为调试的时候,不论我对TextBox有没有再次赋值,获取TextBox值都是绑定时候的值..........
另外几个事件如下:
private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=-1;
}
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
GridBinds();
                }
public void GridBinds()
{
dt=mam.UP_tbtariffandgdcode_GetList(accountcode);
this.DataGrid1.DataSource=dt;
this.DataGrid1.DataKeyField="accountcode";
this.DataGrid1.DataBind();
}
很是烦恼,希望大家帮忙看下,分不够可以再加........如果哪位有例子的话可以发到,最好是:.net2003+sql2000平台的,谢谢大家了

解决方案 »

  1.   

    设置断点跟踪下看看((TextBox)e.Item.Cells[4].FindControl("TextBox1")).Text
    到底是什么
      

  2.   

    不论我对TextBox有没有再次赋值,获取TextBox值都是绑定时候的值
    可能你回发时重新绑定数据了.
    Load 事件里如果有GridBinds(); 
    一定要放在if(!IsPostBack){}里面至于转换错误,肯定时获取的字符串时控或者根本无法转换的字符串,跟踪一下就OK了
      

  3.   

    不是转换的问题,而是我的程序在点击datagrid中的“更新”操作时根本得不到textbox新值,因为是null,所以才会报那个错误,可是我不知道怎么会得不到textbox的修改值的??是不是要修改textbox的某些属性值啊?我试过把textbox的outopostback改为true,但还是不行
      

  4.   

    试下
    ((TextBox)e.Item.Cells[4].Controls[1]).Text 是什么?