我正在使用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
答案 0 :(得分:1)
在MSDN上找到一个小教程,http://msdn.microsoft.com/en-us/library/aa992036.aspx#Y3473 这种解决方法帮助了我。我使用会话而不是行列表。