Web フォーム ビジュアル スタジオ プロジェクトに 2 つのグリッドビューがあります。1 つ目は固定サイズのグリッドで、javascript を使用して、2 つのテキスト ボックスに出力されるグリッド参照を返すように設定しました。次に、これらのテキスト ボックスは、最初のグリッドのクリックされたセルの数値に関連するレコードで 2 番目のグリッドを更新します。
最初の 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番目のグリッドビューのみが更新され、ページ上の残りの要素がそのままレンダリングされたままになるようにするにはどうすればよいですか?
ありがとう。