如何在 ASP.NET 中设置两个 gridview 的行高相等?
How to set row height of two gridviews equal in ASP.NET?
我有两个网格视图。两者都有自动生成的列。但是这两个 gridviews 的行数是一样的。我需要做的是将这两个 gridviews 的行高设置为相等。我尝试使用 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
请指教。谢谢
您可能无法在服务器端执行此操作。您必须为此使用 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:1 对应关系,如果您可以访问生成 2 个网格的 sql 语句,您 可以 将 sql 修改为 return 一个 table 并将 gridview 格式化为 看起来 就像图中的 2 个网格。
这样你就完全不用担心行高了。
想一想,您可以将 2 个数据源操作到一个新的 DataTable 中,然后然后填充一个 gridview。
我有两个网格视图。两者都有自动生成的列。但是这两个 gridviews 的行数是一样的。我需要做的是将这两个 gridviews 的行高设置为相等。我尝试使用 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
请指教。谢谢
您可能无法在服务器端执行此操作。您必须为此使用 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:1 对应关系,如果您可以访问生成 2 个网格的 sql 语句,您 可以 将 sql 修改为 return 一个 table 并将 gridview 格式化为 看起来 就像图中的 2 个网格。
这样你就完全不用担心行高了。
想一想,您可以将 2 个数据源操作到一个新的 DataTable 中,然后然后填充一个 gridview。