在自定义绑定方案中,无法将DataItem强制转换为DataRowView

本文关键字:DataItem 转换 DataRowView 绑定 自定义 方案 | 更新日期: 2023-09-27 17:48:49

我有一个对象,它返回一个IList,我从ObjectDataSource获取该IList并绑定到Gridview。如果我只是使用标准绑定,一切都很好,但我正在尝试自定义我的绑定,以在链接按钮上设置属性,如下所示:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //  extract the link button
                LinkButton lnkViewMap = (LinkButton)e.Row.FindControl("lnkViewMap");
                //  grab the datarowview
               System.Data.DataRowView row = (System.Data.DataRowView)e.Row.DataItem;
                //  set the onclientclick to fire our showMap javascript function,
                //  passing through the lat/longs
                lnkViewMap.OnClientClick = string.Format("showMap({0}, {1}); return false;", row["Lat"], row["Long"]);
            }
        }

将e.Row.DataItem强制转换为DataRowView时,会出现错误。上面的代码来自Matt Berseth在虚拟地球上的精彩博客。。。这就是我试图在这里实现的。有什么想法吗?

在自定义绑定方案中,无法将DataItem强制转换为DataRowView

在调试器中设置一个断点,看看e.Row.DataItem实际上是什么类型。

如果您在网格上设置的DataSourceDataViewDataTable,则仅为DataRowView。否则,它将是集合的元素类型。