如何从objectdatasource获取数据集列值

时间:2015-01-17 00:13:43

标签: c# .net webforms detailsview

自从我使用网络表格以来,我已经忘了如何获取对底层数据的访问以获取列值,以便我可以将特定产品的当前请求设置为页面标题。

我在webforms页面上有详细信息视图,我需要获取名为Title的列的值。

我该怎么做呢?

我确定这是因为我在Page_Load事件中。

有什么建议吗?

   protected void Page_Load(object sender, EventArgs e)
{
    DataSet ds = GetDS(this.ObjectDataSourceItem);
    if (ds != null)
    {
        string title = ds.Tables[0].Columns["Title"].ToString();
        this.Page.Title = title;
    }
}
private DataSet GetDS(ObjectDataSource ods)
{
    DataSet ds = new DataSet();
    DataView dv = (DataView)ods.Select();
    if (dv != null && dv.Count > 0)
    {
        DataTable dt = dv.ToTable();
        ds.Tables.Add(dt);
    }
    return ds;
}

我的错误是无效的投射例外。

以下是我的错误的快照: InvalidCastException


访问基础对象的正确方法,我的自定义对象名称Item。

   private Item GetItem(ObjectDataSource ods)
{
    Item itm = null;
    object[] iObjs = (object[])ods.Select();

    for (int i = 0; i < iObjs.Length; i++)
    {
        itm = (Item)iObjs[i];
    }
    return itm;
}

1 个答案:

答案 0 :(得分:1)

来自MSDNObjectDataSource.Select不必返回DataView类型。从方法签名中,它返回IEnumerable。从调试器屏幕截图中,您可以看到它是一个对象数组。你只需要迭代数组就可以得到埋在下面的值。