2013-12-17 182 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