问题描述
我在做商品添加到购物车的页面,这个不知道咋错了,代码如下rivatevoidBind(){DataTabledt;DataRowdr;stringstr="";dt=newDataTable();dt.Columns.Add(newDataColumn("Id",str.GetType()));dt.Columns.Add(newDataColumn("bookname",str.GetType()));dt.Columns.Add(newDataColumn("bprice",str.GetType()));dt.Columns.Add(newDataColumn("ST_number",str.GetType()));dt.Columns.Add(newDataColumn("ST_totle",str.GetType()));if(!Object.Equals(Request.Cookies["ShopFlowerCart"],null)){HttpCookiecookie=Request.Cookies["ShopFlowerCart"];for(inti=0;i<cookie.Values.Count;i++){intId;DataRowd;doubletotle;dr=dt.NewRow();if((cookie.Values.AllKeys[i]!="")&&(cookie.Values[i]!="")){Id=int.Parse(cookie.Values.AllKeys[i]);d=book.GetBookMessage(Id);dr[0]=Id;dr[1]=d["bookname"];dr[2]=d["bprice"].ToString();dr[3]=cookie.Values[i];totle=double.Parse(dr[2].ToString());totle*=double.Parse(dr[3].ToString());dr[4]=totle.ToString();dt.Rows.Add(dr);}}}DataGrid1.DataSource=dt.DefaultView;DataGrid1.DataBind();}}
解决方案
解决方案二:
急求解决
解决方案三:
GetBookMessage是一个实例方法,调用要通过类对象。假设classTest{publicDataRowGetBookMessage(intid){//todo}}//调用代码Testtest=newTest();DataRowdr=test.GetBookMessage(1);
解决方案四:
引用2楼lovelj2012的回复:
GetBookMessage是一个实例方法,调用要通过类对象。假设classTest{publicDataRowGetBookMessage(intid){//todo}}//调用代码Testtest=newTest();DataRowdr=test.GetBookMessage(1);
你好,我刚修改代码变成了booka=newbook();d=a.GetBookMessage(Id);执行之后又提示我编译器错误消息:CS0029:无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“System.Data.DataRow”,那这咋改
解决方案五:
你的GetBookMessage方法返回SqlDataReader,你赋值给DataRow指定是不行滴嘛
解决方案六:
引用4楼lovelj2012的回复:
你的GetBookMessage方法返回SqlDataReader,你赋值给DataRow指定是不行滴嘛
那我怎么改我把类改了好像也不对,我的类的代码是publicclassbook:DataBase{publicbook(){}publicSqlDataReaderGetBookMessage(intbooktypeId){stringstringsql;SqlDataReadersdr;try{SqlConnectioncon=newSqlConnection(strConn);stringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);returnsdr;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}}求大神帮忙解决一下啊,谢谢了
解决方案七:
1、如果你的book表针对某个type有且仅有一条记录(也就是说,你的方法里面的语句,只会返回一条记录),代码可以改成:publicDataRowGetBookMessage(intbooktypeId){try{SqlConnectioncon=newSqlConnection(strConn);stringstringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();DataSetds=cmd.ExecuteDataSet();returnds!=null&&ds.Table.Count>0&&ds.Table[0].Rows.Count>0?ds.Table[0].DataRow:null;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}
解决方案八:
publicDataRowGetBookMessage(intbooktypeId){try{SqlConnectioncon=newSqlConnection(strConn);stringstringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();DataSetds=cmd.ExecuteDataSet();con.Close();returnds!=null&&ds.Table.Count>0&&ds.Table[0].Rows.Count>0?ds.Table[0].DataRow:null;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}
解决方案九:
引用7楼lovelj2012的回复:
publicDataRowGetBookMessage(intbooktypeId){try{SqlConnectioncon=newSqlConnection(strConn);stringstringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();DataSetds=cmd.ExecuteDataSet();con.Close();returnds!=null&&ds.Table.Count>0&&ds.Table[0].Rows.Count>0?ds.Table[0].DataRow:null;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}
大神,按你修改还不对啊CS1061:“System.Data.SqlClient.SqlCommand”不包含“ExecuteDataSet”的定义,并且找不到可接受类型为“System.Data.SqlClient.SqlCommand”的第一个参数的扩展方法“ExecuteDataSet”(是否缺少using指令或程序集引用?)还有Table找不到定义啊。。。。。。。。。。
解决方案十:
用习惯sqlhelper了,代码都敲错了,⊙﹏⊙b汗改成publicDataRowGetBookMessage(intbooktypeId){try{SqlConnectioncon=newSqlConnection(strConn);stringstringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();SqlDataAdapterda=newSqlDataAdapter(cmd);DataSetds=newDataSet();da.Fill(ds);con.Close();returnds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0?ds.Tables[0].DataRow:null;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}
解决方案十一:
publicDataRowGetBookMessage(intbooktypeId){try{SqlConnectioncon=newSqlConnection(strConn);stringstringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();SqlDataAdapterda=newSqlDataAdapter(cmd);DataSetds=newDataSet();da.Fill(ds);con.Close();returnds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0?ds.Tables[0].DataRow[0]:null;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}
解决方案十二:
引用10楼lovelj2012的回复:
publicDataRowGetBookMessage(intbooktypeId){try{SqlConnectioncon=newSqlConnection(strConn);stringstringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();SqlDataAdapterda=newSqlDataAdapter(cmd);DataSetds=newDataSet();da.Fill(ds);con.Close();returnds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0?ds.Tables[0].DataRow[0]:null;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}编译器错误消息:CS1061:“System.Data.DataTable”不包含“DataRow”的定义,并且找不到可接受类型为“System.Data.DataTable”的第一个参数的扩展方法“DataRow”(是否缺少using指令或程序集引用?)}
大神,我要奔溃了,最后的datarow不对啊
解决方案十三:
引用10楼lovelj2012的回复:
publicDataRowGetBookMessage(intbooktypeId){try{SqlConnectioncon=newSqlConnection(strConn);stringstringsql="selectbookname,btype,bprice,Id,discountfrombookwheretype="+booktypeId;SqlCommandcmd=newSqlCommand(stringsql,con);con.Open();SqlDataAdapterda=newSqlDataAdapter(cmd);DataSetds=newDataSet();da.Fill(ds);con.Close();returnds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0?ds.Tables[0].DataRow[0]:null;}catch(System.Data.SqlClient.SqlExceptioner){thrownewException(er.Message);}}
编译器错误消息:CS1061:“System.Data.DataTable”不包含“DataRow”的定义,并且找不到可接受类型为“System.Data.DataTable”的第一个参数的扩展方法“DataRow”(是否缺少using指令或程序集引用?)
解决方案十四:
晕,你不能变通下么?哥是手敲的代码~改成returnds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0?ds.Tables[0].Rows[0]:null;