我有两个Gridview。两者都有自动生成的列。但是这两个网格视图具有相同的行数。我需要做的是设置这两个网格视图的行高相等。我尝试使用gridviews的RowDataBound事件,但它没有工作。
这是Gridviews应该如何显示的预览:
这是我尝试构建的rowdatabound事件,但它并没有真正起作用:
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
Dim gv1
Dim gv2
For i = 0 To e.Row.Cells.Count - 1
e.Row.Cells(i).Width = Page.Request.Browser.ScreenPixelsWidth
gv1 = GridView1.Rows(i).Height
gv2 = GridView2.Rows(i).Height
If gv2 > gv1 Then
e.Row.Cells(i).Height = gv2
End If
Next
End Sub
Private Sub GridView2_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView2.RowDataBound
Dim gv1
Dim gv2
For i = 0 To e.Row.Cells.Count - 1
e.Row.Cells(i).Width = Page.Request.Browser.ScreenPixelsWidth
gv1 = GridView1.Rows(i).Height
gv2 = GridView2.Rows(i).Height
If gv1 > gv2 Then
e.Row.Cells(i).Height = gv1
End If
Next
End Sub
请指教。感谢。
答案 0 :(得分:0)
您可能无法在服务器端执行此操作。您必须使用j查询:
$(document).ready(function () {
SetHeight();
});
function SetHeight() {
$("#GridView2 > tbody > tr").each(function (i, tr) {
if ($("#GridView2 > tbody > tr:nth-child(" + (i + 1) + ")").height() > $("#GridView1 > tbody > tr:nth-child(" + (i + 1) + ")").height()) {
$("#GridView1 > tbody > tr:nth-child(" + (i + 1) + ")").height($("#GridView2 > tbody > tr:nth-child(" + (i + 1) + ")").height());
} else {
$("#GridView2 > tbody > tr:nth-child(" + (i + 1) + ")").height($("#GridView1 > tbody > tr:nth-child(" + (i + 1) + ")").height());
}
});
}
答案 1 :(得分:0)
作为替代方案,由于行似乎始终具有1:1的对应关系,如果您可以访问生成2个网格的sql语句,则可以重新编写sql以返回一个表,将gridview格式化为外观,就像图中的2个网格一样。
这样你就不必担心行高了。
想想看,您可以将2个数据源操作为新的DataTable,然后然后填充一个gridview。