.NET GridView更新,e.OldValues为空

时间:2013-04-05 00:30:42

标签: asp.net vb.net gridview objectdatasource updating

我正在使用AJAX TabContainer并在每个选项卡中都有一个asp GridView,它绑定到ObjectDataSource。 ObjectDataSource基于所选的选项卡返回不同的对象(TabContainer AutoPostBack =" True")。我将ObjectDataSource绑定到GridView,基于TabContainer中选择的选项卡,只有在IsPostBack后面的代码中,因为在第一次加载时TabContainer不可见。我没有在其他任何地方绑定GridView。 GridView中的字段是Eval而不是Bind,因为参数是以对数方式添加到ObjectDataSource。

这是一个批量更新GridView,可以编辑所有字段。当我更新GridView时,我无法看到e.OldValues。如果GridView中的字段设置为Bind,我能够检索到e.NewValues的e.OldValues仍为空...

有谁知道这笔交易是什么?

<asp:ObjectDataSource ID="odsEquipment" runat="server" TypeName="EquipmentDB" SelectMethod="GetEquipment" SortParameterName="sortExpression" UpdateMethod="UpdateEquipment">
    <SelectParameters>
        --Params
    </SelectParameters>
    <UpdateParameters>
        --Params
    </UpdateParameters>
</asp:ObjectDataSource>


<asp:TabContainer ID="tcDisciplines" runat="server" CssClass="ajax_tabController" ScrollBars="Horizontal" AutoPostBack="True">
--Tabs and GridViews with no properties

代码背后:

Protected Sub tcDisciplines_Load(sender As Object, e As EventArgs) Handles tcDisciplines.Load
    If IsPostBack Then
        For Each discipline In disciplineList
            tcDisciplines.Tabs(discipline.ID).HeaderText = discipline.Discipline
            tcDisciplines.Tabs(discipline.ID).TabIndex = discipline.ID

            Dim gv As GridView = TryCast(tcDisciplines.Tabs(discipline.ID).Controls(0).FindControl("gv" + discipline.Abbr), GridView)
            gv.Visible = False

            If tcDisciplines.ActiveTabIndex = discipline.ID Then
                gv.Visible = True

                'Set properties
            End If
        Next
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

在MSDN上找到一个小教程,http://msdn.microsoft.com/en-us/library/aa992036.aspx#Y3473 这种解决方法帮助了我。我使用会话而不是行列表。