1

我正在使用 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
4

1 回答 1

1

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

于 2013-04-05T18:15:17.187 回答