填充列表视图

时间:2013-12-17 16:49:44

标签: c# asp.net listview casting populate

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

<%#Eval(“CategoryName”)%>

填充第二个列表视图的代码如下:

 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”];

我收到错误 “指定的演员表无效”

有人可以提出一些建议来解决这个问题吗?

1 个答案:

答案 0 :(得分: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>