Mono ASP.NET GridView.Rows行为与.NET不同

时间:2012-05-29 05:58:08

标签: c# asp.net ajax mono

在我绑定到ObjectDataSource的分页GridView(包含在UpdatePanel中)中,我有一个OnDataBound事件,

protected void GridView1_DataBound(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        // row isn't starting from the first row of current page in mono!
    }
}

在.NET中运行时,我GridView.Rows总是给我当前页面中的那些(即GridViewRow.DataItemIndex不是0,而是它的数据源的正确索引)。但是在Mono 2.10.8上,无论我正在查看哪个页面,这都会给我0

但是,GridView.Rows [0] .DataItem返回与.NET相同的项目。似乎DataItemIndex中存在一个错误。

有没有办法解决它并实现与Mono上的.NET相同的行为并仍然保持与.NET的兼容性?

1 个答案:

答案 0 :(得分:1)

找到了实现这一目标的方法。

public static int GetDataItemIndex(this GridViewRow row)
{
    var gridView = (GridView)row.NamingContainer;
    return row.RowIndex + (gridView.PageIndex * gridView.PageSize);
}

这适用于Mono和.NET。