1

Web フォーム ビジュアル スタジオ プロジェクトに 2 つのグリッドビューがあります。1 つ目は固定サイズのグリッドで、javascript を使用して、2 つのテキスト ボックスに出力されるグリッド参照を返すように設定しました。次に、これらのテキスト ボックスは、最初のグリッドのクリックされたセルの数値に関連するレコードで 2 番目のグリッドを更新します。

プログレス グリッド OK

最初の gridview はカラフルなもので、2 番目の gridview はその下のダッシュで区切られたテキストです。例では、選択されたセル参照が D と 3a であり、下の 2 番目のグリッドは、セル D 3a の番号が参照している 6 人の生徒の名前を示しています。これはうまくいきます。ただし、グリッドを複数回クリックすると、レイアウトがめちゃくちゃになります。

進行状況グリッドが正しくありません

ご覧のとおり、レンダリングされたヘッダーが消え、これによりレイアウトに問題が発生し、その後グリッド参照の配置に問題が発生します。

最初のグリッドビューのデータバインド イベントには、グリッドビューで消える追加のヘッダーを生成する次の vbcode があります。

    If gvProgressGrid IsNot Nothing Then
        Dim row As New GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal)

        Dim left As TableCell = New TableHeaderCell()
        left.ColumnSpan = 2
        row.Cells.Add(left)
        left.BorderStyle = BorderStyle.None

        Dim grades As TableCell = New TableHeaderCell()
        grades.ColumnSpan = 10
        grades.Text = "Grades"
        row.Cells.Add(grades)

        Dim cohort As TableCell = New TableHeaderCell()
        cohort.ColumnSpan = 1
        cohort.Text = "Cohort"
        cohort.RowSpan = 2
        cohort.BackColor = Drawing.Color.FromArgb(242, 242, 242)
        row.Cells.Add(cohort)

        Dim expected As TableCell = New TableHeaderCell()
        expected.ColumnSpan = 2

        Select Case strYear
            Case "11"
                expected.Text = "Students achieving expected progress (3 or more levels)"
            Case "10"
                expected.Text = "Students achieving expected progress (2 or more levels)"
            Case "9"
                expected.Text = "Students achieving expected progress (1 or more levels)"
        End Select

        expected.BackColor = Drawing.Color.FromArgb(216, 216, 216)
        expected.Width = 250
        row.Cells.Add(expected)

        Dim above As TableCell = New TableHeaderCell()
        above.ColumnSpan = 2
        Select Case strYear
            Case "11"
                above.Text = "Students achieving above expected progress (4 or more levels)"
            Case "10"
                above.Text = "Students achieving above expected progress (3 or more levels)"
            Case "9"
                above.Text = "Students achieving above expected progress (2 or more levels)"
        End Select
        above.BackColor = Drawing.Color.FromArgb(242, 242, 242)
        above.Width = 250
        row.Cells.Add(above)

        Dim t As Table = TryCast(gvProgressGrid.Controls(0), Table)
        If t IsNot Nothing Then
            t.Rows.AddAt(0, row)
        End If
    End If

JavaScript で次のコード (クリック時に最初のグリッドビューのグリッド参照を取得するスクリプト) を使用して、2 番目のテキスト ボックスのテキストの変更/フォーカスの喪失を自動的にトリガーします。

document.getElementById("<%=tbKS2.ClientID%>").value = strKS2;
__doPostBack(document.getElementById("<%=tbKS2.ClientID%>").name, '')  

最初のグリッドがクリックされたときに更新する必要があるのは 2 番目のグリッドビューだけであり、ページ全体または少なくとも最初のグリッドビューも更新されているように見えます。

上記のテキストボックスのポストバックがトリガーされると、2番目のグリッドビューのみが更新され、ページ上の残りの要素がそのままレンダリングされたままになるようにするにはどうすればよいですか?

ありがとう。

4

1 に答える 1