javascript - ASP. NET 在 textchanged postback 上更新ASP页上的单个元素

  显示原文与译文双语对照的内容
0 0

我在webform项目中有两个 gridviews 。 第一个是固定大小的网格,使用 javascript,我设法设置了一个网格引用,然后输出到两个文本框。 这些文本框随后更新第二个网格,其中包含与第一个网格的单击单元格中的数字相关的记录:

Progress Grid Ok

第一个gridview是彩色的,第二个gridview是分隔的文本 below 。 在示例中,可以看到选定的单元格引用是D 和 3a,第二个网格 below 显示 6个学生的数字。 但是,在我单击网格之后,布局会被弄乱,这一点不止一次:

Progress Grid Not Ok

正如你可以看到渲染头消失,然后这会导致布局和后续的网格引用定位。

在第一个gridview的数据绑定事件中,下面的vbcode生成了在gridview上的附加标头,它消失了:


 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 上面 As TableCell = New TableHeaderCell()
 上面.ColumnSpan = 2
 Select Case strYear
 Case"11"
 上面.Text ="Students achieving 上面 expected progress (4 or more levels)"
 Case"10"
 上面.Text ="Students achieving 上面 expected progress (3 or more levels)"
 Case"9"
 上面.Text ="Students achieving 上面 expected progress (2 or more levels)"
 End Select
 上面.BackColor = Drawing.Color.FromArgb(242, 242, 242)
 上面.Width = 250
 row.Cells.Add(上面)

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

在我的javascript ( 。获取第一个gridview的网格引用的脚本单击) 中使用下面的代码在第二个文本框中自动触发文本/焦点的更改:


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

只有第二个gridview在单击第一个网格时才需要更新,看起来像整个第一个gridview更新。

如何才能获得 上面 文本框 postback 被触发的第二个 gridview,它的余的元素在页面上保持显示。

谢谢。

时间: 原作者:

0 0

你需要在网格的 RowCreated事件期间插入该行:


Private Sub gvProgressGrid_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles gvProgressGrid.RowCreated
 If e.Row.RowType = DataControlRowType.Header Then

 ' the rest of your code
 '.. .
 '.. .


 End If

End Sub

...