【问题标题】:Populating list views填充列表视图
【发布时间】:2014-01-05 13:25:57
【问题描述】:

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

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

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

我在哪里得到错误 “指定的演员表无效”

谁能提供一些关于我可以做些什么来解决这个问题的提示?

【问题讨论】:

    标签: c# asp.net listview casting populate


    【解决方案1】:

    你可以试试:

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

    ViewState 似乎返回了一个无法转换为 Guid 的对象。如果您尝试上述方法,您应该能够轻松地从 ViewState 中“CatID”的字符串表示形式创建 Guid。

    另外,在回复您下面的评论时,为什么不试试这个而不是&lt;asp:HyperLink&gt;

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

    【讨论】:

    • 非常感谢您的帮助。我尝试了您的建议并摆脱了错误,但是我想出了以下错误消息:对象引用未设置为对象的实例可能是我从超链接中获取的 id 错误吗?超链接代码: 这个超链接位于一个单独的 Web 表单中,其中类别 ID 是动态存储的,并由前面提到的来自第二个 Web 表单获取
    • 我认为您在id 查询字符串参数中所拥有的实际上是字符串“CategoryId”。我会更新我的答案以考虑您的评论。
    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多