GridView更新时传参时为什么总提示字符串格式不正确呢?

yan717fang 2009-04-24 08:38:50
方法:
 //更新图书
public DataSet BookUpdate(string book_ID, string book_Name, string book_Desc, int bt_ID, string book_Image, float rebate, float book_Price, string book_Publisher, string book_Author,DateTime book_Time,string book_IsDel)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString);
SqlCommand cmd = new SqlCommand("bookUpdate", conn);
cmd.CommandType = CommandType.StoredProcedure;


SqlParameter parambook_ID = new SqlParameter("@book_ID", SqlDbType.NVarChar, 10);
parambook_ID.Value = book_ID;
cmd.Parameters.Add(parambook_ID);


SqlParameter parambook_Name = new SqlParameter("@book_Name", SqlDbType.NVarChar, 50);
parambook_Name.Value = book_Name;
cmd.Parameters.Add(parambook_Name);



SqlParameter parambook_Desc = new SqlParameter("@book_Desc", SqlDbType.NVarChar, 500);
parambook_Desc.Value = book_Desc;
cmd.Parameters.Add(parambook_Desc);


SqlParameter parambt_ID = new SqlParameter("@bT_ID", SqlDbType.Int);
parambt_ID.Value = bt_ID;
cmd.Parameters.Add(parambt_ID);


SqlParameter parambook_Image = new SqlParameter("@book_Image", SqlDbType.NVarChar, 100);
parambook_Image.Value = book_Image;
cmd.Parameters.Add(parambook_Image);


SqlParameter paramrebate = new SqlParameter("@rebate", SqlDbType.Float);
paramrebate.Value = rebate;
cmd.Parameters.Add(paramrebate);


SqlParameter parambook_Price = new SqlParameter("@book_Price", SqlDbType.Float);
parambook_Price.Value = book_Price;
cmd.Parameters.Add(parambook_Price);

SqlParameter parambook_Publisher = new SqlParameter("@book_Publisher", SqlDbType.NVarChar, 50);
parambook_Publisher.Value = book_Publisher;
cmd.Parameters.Add(parambook_Publisher);


SqlParameter parambook_Author = new SqlParameter("@book_Author", SqlDbType.NVarChar, 50);
parambook_Author.Value = book_Author;
cmd.Parameters.Add(parambook_Author);


SqlParameter parambook_Time = new SqlParameter("@book_Time", SqlDbType.DateTime);
parambook_Time.Value = book_Time;
cmd.Parameters.Add(parambook_Time);


SqlParameter parambook_IsDel = new SqlParameter("@book_IsDel", SqlDbType.Char,2);
parambook_IsDel.Value = book_IsDel;
cmd.Parameters.Add(parambook_IsDel);


SqlDataAdapter ada = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
ada.Fill(ds);

return ds;
}

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Manage manage = new Manage();
GridView1.DataKeyNames = new string[] { "book_ID" };

string bookid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
string bookname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
string bookdesc = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
string btid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
string bookimage = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim();
string rebate = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim();
string bookprice = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[7].Controls[0])).Text.ToString().Trim();
string bookpublisher = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[8].Controls[0])).Text.ToString().Trim();
string bookauthor = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[9].Controls[0])).Text.ToString().Trim();
string booktime = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[10].Controls[0])).Text.ToString().Trim();
string bookisdel = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[11].Controls[0])).Text.ToString().Trim();

DataSet ds = manage.BookUpdate(bookid, bookname, bookdesc, Convert.ToInt32(btid), bookimage, Convert.ToSingle(rebate), Convert.ToSingle(bookprice), bookpublisher, bookauthor,Convert.ToDateTime(booktime),bookisdel);
GridView1.DataSource = ds;
bind();
页面:
...全文
129 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoulingsmile 2010-05-07
  • 打赏
  • 举报
回复
呵呵,帮你顶哈,加油啊
yan717fang 2009-04-28
  • 打赏
  • 举报
回复
谢谢提醒,似乎找到了根源,我先试试!
glboy12 2009-04-28
  • 打赏
  • 举报
回复
很有可能是你的数据取的不对。导致的
string bookid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
string bookname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
string bookdesc = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
string btid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
string bookimage = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim();
string rebate = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim();
string bookprice = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[7].Controls[0])).Text.ToString().Trim();
string bookpublisher = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[8].Controls[0])).Text.ToString().Trim();
string bookauthor = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[9].Controls[0])).Text.ToString().Trim();
string booktime = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[10].Controls[0])).Text.ToString().Trim();
string bookisdel = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[11].Controls[0])).Text.ToString().Trim();

改为
string bookid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text.ToString().Trim();
string bookname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();
string bookdesc = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();
string btid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();
string bookimage = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
string rebate = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim();
string bookprice = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim();
string bookpublisher = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[7].Controls[0])).Text.ToString().Trim();
string bookauthor = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[8].Controls[0])).Text.ToString().Trim();
string booktime = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[9].Controls[0])).Text.ToString().Trim();
string bookisdel = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[10].Controls[0])).Text.ToString().Trim();
yan717fang 2009-04-28
  • 打赏
  • 举报
回复
这个和我的有什么区别吗?不觉得有什么区别啊,现在主要是类型转换上有问题,希望能够大家多留心帮帮忙!!!
编程有钱人了 2009-04-28
  • 打赏
  • 举报
回复

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString);
SqlCommand cmd = new SqlCommand("bookUpdate", conn);
cmd.CommandType = CommandType.StoredProcedure;


SqlParameter[] parambook = new SqlParameter[]{
new SqlParameter("@book_ID",book_ID),
new SqlParameter("@book_Name", book_Name),
new SqlParameter("@book_Desc", book_Desc)
//下面省略....
}




yan717fang 2009-04-28
  • 打赏
  • 举报
回复
恩 我试试吧
glboy12 2009-04-28
  • 打赏
  • 举报
回复
根据你贴的代码。我感觉这句有问题
DataSet ds = manage.BookUpdate(bookid, bookname, bookdesc, Convert.ToInt32(btid), bookimage, Convert.ToSingle(rebate), Convert.ToSingle(bookprice), bookpublisher, bookauthor,Convert.ToDateTime(booktime),bookisdel);

重点在Convert.ToDateTime(booktime)
是datetime类型,如果你传入的格式与日期格式不匹配的时候就会报错。
建议你DateTime.TryParse(booktime)试试。
yan717fang 2009-04-28
  • 打赏
  • 举报
回复
数据怎么不正确啊?都转换过类型啊!怎么调试啊
yan717fang 2009-04-28
  • 打赏
  • 举报
回复
报错的地方就是这里:string btid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim(); 说是字符串不匹配
还有这里: string bookisdel = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[11].Controls[0])).Text.ToString().Trim(); 说是索引越界

llsen 2009-04-28
  • 打赏
  • 举报
回复
string btid = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();
类似这些int和decimal的数字型的,你要调试看数据是否正确
如果是字符就会出错
PandaIT 2009-04-28
  • 打赏
  • 举报
回复
报错的地方发出来!

然后就是自己设置断点

调试看看!
yan717fang 2009-04-28
  • 打赏
  • 举报
回复
还没解决,帮忙看看啊……
yan717fang 2009-04-28
  • 打赏
  • 举报
回复
同志们,谁在帮忙看看啊!急死了……
yan717fang 2009-04-28
  • 打赏
  • 举报
回复
怎么追踪啊!我也不知道怎么用断点。代码都在上面了,谁有空帮我看看!
Tensionli 2009-04-24
  • 打赏
  • 举报
回复
追踪一下,是不是有为NULL的字符串
zhulong1111 2009-04-24
  • 打赏
  • 举报
回复
设置个断点,调试下 当到那出错了就 那个字段有问题。
chinawes 2009-04-24
  • 打赏
  • 举报
回复
设个断点调试看看哪里出错了。
goldxinx 2009-04-24
  • 打赏
  • 举报
回复
看绑定列的数据格式
wrtmdy 2009-04-24
  • 打赏
  • 举报
回复
ddddd
yan717fang 2009-04-24
  • 打赏
  • 举报
回复
没有空格吧!你看看是不是我的类型转换有问题呢
加载更多回复(2)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧