如何在 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。