有没有办法在RowDataBound事件中访问另一行中的元素?在Gridview RowDataBound中访问另一行?
public void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// how to compare e.Row with row above or row below?
}
有没有办法在RowDataBound事件中访问另一行中的元素?在Gridview RowDataBound中访问另一行?
public void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// how to compare e.Row with row above or row below?
}
一两件事,我觉得你可以做的是...
foreach (GridViewRow gvrow in GridView1)
{
//loop through gridview's rows and find the row you're looking for
}
相信的RowDataBound添加行以相同的顺序数据源中有他们,因此,如果有100个记录在你的数据表并且将该DataTable绑定到GridView,RowDataBound将按照它们在DataTable中存在的顺序为每一行调用100次。因此,您提到使用RowDataBound将e.Row与上面的OR行或上面的行进行比较......但如果它们按顺序进入,则下面没有行。这是我以前没有真正想过的,但我记得在做断点测试时RowDataBound以这种方式运行。
如果你不能得到那样的工作,并且即使它不漂亮并且没有得到任何更好的答案,也需要这样做,那么可以存储你的数据绑定数据表的副本或任何源代码对于数据是ViewState或Session变量,比如ViewState [“myDataTable”]。然后,您可以检索RowDataBound事件上的DataTable,并查看由e.Row表示的行上下的行(假设您有某种类型的光标,如ID来标识行)。通过这样做,您可以查看RowDataBound将添加到GridView的下一行,因为它将成为DataTable中的下一行(已存在并且可以查看)。
如果你在做大规模的东西,但我想所有这些循环都会变得麻烦。
嗨CptSupermrkt,非常感谢您的意见。我做了你的建议 - 只需在数据绑定之后通过gridview循环,而不是在RowDataBound中尝试这样做。它增加了一些额外的代码行,但很好地工作。再次感谢 :) – S200