帮忙把错误改一下!

franksword 2005-08-21 04:17:15
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
using System.Data.SqlClient;

namespace eshop.pagemodel.model1
{
/// <summary>
/// showWareByType 的摘要说明。
/// </summary>
public class showWareByType : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList dl_BookByType;
protected static char typeID;
protected static string strConn= ConfigurationSettings.AppSettings ["strConnection"];

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//WareType字段在数据库里的值为“牛奶”“香蕉”等之类的汉字。
ViewState["wareTypeID"]=Request.QueryString["WareType"];

dl_BookByType.DataSource=GetWareMessage(char.Parse(ViewState["wareTypeID"].ToString()));
dl_BookByType.DataBind();
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion


public SqlDataReader GetWareMessage(char wareTypeID)
{
string strSQL;
SqlDataReader result;
SqlConnection myCn;
SqlCommand myCm;
try
{
myCn=new SqlConnection(strConn);
strSQL="select * from Ware where Ware_ChildType="+wareTypeID;
myCm=new SqlCommand(strSQL,myCn);
myCn.Open ();
result=myCm.ExecuteReader(CommandBehavior.CloseConnection);
return result;
}
catch(System.Data.SqlClient.SqlException er)
{
throw new Exception(er.Message);
}


}
}
}


这里报错:
字符串的长度只能为一个字符。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 字符串的长度只能为一个字符。

源错误:


行 32: ViewState["wareTypeID"]=Request.QueryString["WareType"];
行 33:
行 34: dl_BookByType.DataSource=GetWareMessage(char.Parse(ViewState["wareTypeID"].ToString()));
行 35: dl_BookByType.DataBind();
行 36: /*try


源文件: e:\eshop\pagemodel\model1\showwarebytype.aspx.cs 行: 34

堆栈跟踪:


[FormatException: 字符串的长度只能为一个字符。]
System.Char.Parse(String s) +116
eshop.pagemodel.model1.showWareByType.Page_Load(Object sender, EventArgs e) in e:\eshop\pagemodel\model1\showwarebytype.aspx.cs:34
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731


...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
franksword 2005-08-23
  • 打赏
  • 举报
回复
这个我知道,我发这个帖子就是想请各位替我想另一个方法,把ViewState["wareTypeID"]的值与Ware_ChildType的值相匹配,从而可以执行数据库操作。
TechEye 2005-08-21
  • 打赏
  • 举报
回复
char.Parse(ViewState["wareTypeID"].ToString();
很明显,你的ViewState["wareTypeID"].ToString()长度超过一个字节!!!
franksword 2005-08-21
  • 打赏
  • 举报
回复
你们的这些想法以前我都试过了,没有用。
franksword 2005-08-21
  • 打赏
  • 举报
回复
Ware_ChildType是char类型的,而且它的值也是“牛奶”“香蕉”之类的汉字,与WareType是对应的,要返回的话,这些值是不能拆开的。
fanruinet 2005-08-21
  • 打赏
  • 举报
回复
Ware_ChildType字段是什么类型的?如果确实只有一个字符,那么

dl_BookByType.DataSource=GetWareMessage(char.Parse(ViewState["wareTypeID"].ToString().Substring(0, 1)));
否则
dl_BookByType.DataSource=GetWareMessage(ViewState["wareTypeID"].ToString());

并且
public SqlDataReader GetWareMessage(char wareTypeID)
改为
public SqlDataReader GetWareMessage(string wareTypeID)
  • 打赏
  • 举报
回复
dl_BookByType.DataSource=GetWareMessage(char.Parse(ViewState["wareTypeID"].ToString()));

检查ViewState["wareTypeID"].ToString()的值,只能是一个字符啊

如char.Parse("s");才是对的。
franksword 2005-08-21
  • 打赏
  • 举报
回复
自己先在这里谢了!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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