首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改文本的回发上的ASP .Net更新asp页上的单个元素

更改文本的回发上的ASP .Net更新asp页上的单个元素
EN

Stack Overflow用户
提问于 2013-06-07 19:37:13
回答 1查看 294关注 0票数 1

我在一个webform visual studio项目中有两个网格视图。第一个是固定大小的网格,使用javascript,我成功地设置返回一个网格引用,然后输出到两个文本框中。然后,这些文本框使用与第一个网格中单击的单元格中的数字相关的记录更新第二个网格:

第一个网格视图是彩色的,第二个网格视图是它下面的破折号分隔的文本。在本例中,您可以看到选定的单元格引用是D和3a,下面的第二个网格显示了单元格D3a中的数字所引用的6个学生的姓名。这很好用。然而,在我多次点击网格之后,布局就变得混乱了:

正如你所看到的,渲染的标题消失了,这导致了布局和随后的网格参考定位的问题。

在第一个网格视图的数据绑定事件中,我有下面的vbcode,它在网格视图上生成附加的消失头:

代码语言:javascript
复制
    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中的以下代码(在单击时获取第一个网格视图的网格引用的脚本)自动触发第二个文本框上的文本更改/焦点丢失:

代码语言:javascript
复制
document.getElementById("<%=tbKS2.ClientID%>").value = strKS2;
__doPostBack(document.getElementById("<%=tbKS2.ClientID%>").name, '')  

当点击第一个网格时,只有第二个网格视图需要更新,它看起来就像整个页面,或者至少第一个网格视图也在更新。

如何才能在触发上述textbox回发后,只更新我的第二个网格视图,而页面上的其余元素保持原样呈现?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-08 00:03:57

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16983178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档