我有一个对象,它返回一个IList,我从ObjectDataSource获取并绑定到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在Virtual Earth上的精彩博客......这就是我想在这里实现的。有什么想法吗?
答案 0 :(得分:2)
在调试器中设置断点,看看e.Row.DataItem
实际上是什么类型。
如果您在网格上设置的DataRowView
为DataSource
或DataView
,则只有DataTable
。否则它将是集合的元素类型。