【问题标题】:How to get dataset column value from objectdatasource如何从 objectdatasource 获取数据集列值
【发布时间】:2015-01-17 00:13:43
【问题描述】:

自从我使用网络表单以来已经很长时间了,我忘记了如何访问基础数据以获取列值,以便我可以将特定产品的当前请求设置为页面标题。

我有一个 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;
}

我的错误是无效的强制转换异常。

这是我的错误的快照:


获得访问底层对象的正确方法,我的自定义对象名称 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;
}

【问题讨论】:

    标签: c# .net webforms detailsview


    【解决方案1】:

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

    【讨论】:

    • 你能不能给我们一点代码?
    • 为此,我需要知道对象数组中存在哪些特定类型。首先,您可以在 Page_Load 中尝试:var data = this.ObjectDataSourceItem.Select(); var type = data[0].GetType(); 您在类型中找到了什么?
    • 我明白你在做什么,这就是我最终得到答案的方式。在您的帮助下,我终于得到了它,但是,是的,GetType() 是一种获取类型的巧妙方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2014-05-22
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多