日期:2014-05-18  浏览次数:20512 次

又来发帖了,希望大家帮帮忙........下班前结贴,在线,急!!!
现在做项目,遇到点儿小问题:.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 markettype=e.Item.Cells[1].Text;
int stocktype=int.Parse(e.Item.Cells[2].Text);

mam.UP_tbtariff_Update(accountcode,markettype,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();
}
很是烦恼,希望大家帮忙看下,分不够可以再加........如果哪位有例子的话可以发到我的邮箱jacksion520@126.com,最好是:.net2003+sql2000平台的,谢谢大家了

------解决方案--------------------
设置断点跟踪下看看((TextBox)e.Item.Cells[4].FindControl("TextBox1")).Text
到底是什么
------解决方案--------------------
不论我对TextBox有没有再次赋值,获取TextBox值都是绑定时候的值
可能你回发时重新绑定数据了.
Load 事件里如果有GridBinds(); 
一定要放在if(!IsPostBack){}里面

至于转换错误,肯定时获取的字符串时控或者根本无法转换的字符串,跟踪一下就OK了