2013-12-17 180 views
1

在我的程序中,我有一个列表视图,在其中使用数据库中的数据填充它,并通过选择其中一个列表视图项目,将其重定向到第二个列表视图将被创建并填充的页面到在第一个列表视图中选择的项目的ID。该ID是通过从第一列表视图中的超链接的方法获得:填充列表视图

<%#的eval(“类别名称”)%>

来填充第二列表视图是如下所述的代码:

public partial class SubCategories : System.Web.UI.Page 
{ 
    BASubCategory bs = new BASubCategory(); 
    void BindListView() 
    { 
     Guid cID = (Guid)ViewState["CatID"]; 
     List<SubCategory> subcatlist = (List<SubCategory>)bs.GetSubCategoryCategory(cID); 
     SubCategoryListView.DataSource = subcatlist; 
     SubCategoryListView.DataBind(); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     ViewState["CatID"] = Request["id"]; 
     BindListView(); 
    } 

} 

当我尝试运行这个时,我得到一个错误:

Guid cID =(Guid)ViewState [“CatID”];

在那里我得到的错误 “指定的转换无效”

任何人都可以给一些提示,以什么我可以做些什么来解决这个问题?

回答

0

你可以尝试:

Guid cID = new Guid(ViewState["CatID"].ToString()); 

ViewState中出现返回不能转换为一个GUID的对象。如果你尝试了上面的内容,你应该能够很容易地从ViewState中的“CatID”的字符串表示中创建Guid。

此外,在回答下面的评论,为什么不试试这个,而不是<asp:HyperLink>

<a href='<%# ResolveClientUrl("~/SubCategories.aspx") %>?id=<%#Eval("CategoryId") %>'><%#Eval("CategoryName")%></a> 
+0

非常感谢你的帮助。 我试着你的建议,我摆脱了错误,但我想出了以下错误信息: 对象引用未设置为一个对象的实例 难道是我从超链接获取id错误? 超链接代码: <%#Eval(“CategoryName”)%> 这个超链接是在一个单独的Web表单中,其中类别ID是动态存储的,并从第二个Web表单获得,前面提到过 – Maeglin77

+0

我认为你在'id'查询字符串参数中的实际上是字符串“CategoryId”。我会更新我的答案,同时考虑到你的评论。 – GaryEmery