我正在使用 AJAX TabContainer 并在每个绑定到 ObjectDataSource 的选项卡中都有一个 asp GridView。ObjectDataSource 根据选择的选项卡返回不同的对象 (TabContainer AutoPostBack="True")。我将 ObjectDataSource 绑定到 GridView 基于 TabContainer 加载期间在代码中选择的选项卡,仅当 IsPostBack 时,因为在第一次加载时 TabContainer 不可见。我没有在其他任何地方绑定 GridView。GridView 中的字段是 Eval 而不是 Bind,因为参数是动态添加到 ObjectDataSource 的。
这是一个批量更新 GridView,所有字段均可编辑。当我更新 GridView 时,我看不到 e.OldValues。如果 GridView 中的字段设置为绑定,我可以检索 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