UpdatePanel内的DropDownList.SelectedIndexChanged导致调用UpdatePanel的ObjectDataSource.SelectMethod OUTSIDE

时间:2012-05-15 23:05:43

标签: asp.net updatepanel objectdatasource

我有一个asp.net页面:

  • 一个UpdatePanel
  • 一个ObjectDataSource
  • 一个GridView

更新面板如下所示:

<asp:UpdatePanel ID="MyUpdatePanel" runat="server">
    <ContentTemplate>

         <asp:DropDownList ID="MyDropDownList" runat="server"
                           AutoPostBack="True">
             ...
         </asp:DropDownList>

         <asp:TextBox ID="MyTextBox" runat="server" />

         <asp:Button ID="MySubmitButton" runat="server" text="Submit" />

    </ContentTemplate>
</asp:UpdatePanel>

当用户在下拉列表中选择一个选项时,文本框会出现问题,可能会启用或禁用,或者可能会填充或清空(取决于所选的选项)。此更改不应影响页面的其余部分(这就是我将其放在UpdatePanel中的原因)。

现在,在更新面板之外,我有了页面的其余部分。像这样:

<asp:ObjectDataSource ID="MyObjectDataSource" runat="server"
                          SelectMethod="MySelect" 
                          TypeName="MyType">
    <SelectParameters>
        <asp:ControlParameter Name="Parameter1" Type="String" ControlID="MyDropDownList" PropertyName="SelectedValue" />
        <asp:ControlParameter Name="Parameter2" Type="String" ControlID="MyTextBox" PropertyName="Text" />
    </SelectParameters>
</asp:ObjectDataSource>

<asp:GridView ID="MyGridView" runat="server" 
                  AutoGenerateColumns="False" 
                  DataKeyNames="MY_ID"
                  DataSourceID="MyObjectDataSource">
        <Columns>
            ....
        </Columns>
</asp:GridView>

同样,ObjectDataSource和GridView在UpdatePanel外面。

但每当我在下拉列表中选择一个选项时,都会调用MyObjectDataSource的SelectMethod!

我做错了什么?

提前感谢您的帮助。

更新:

我尝试将MyObjectDataSource和MyGridView放在SEPARATE更新面板中,但页面窗口具有相同的行为: - (

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

  1. 用asp:Parameters替换asp:ControlParameters。
  2. 在MySubmitButton.Click()事件中添加了对MyGridView.DataBind的调用。
  3. 为MyObjectDataSource.Selecting()事件中的参数指定值。
  4. 现在只有当用户点击MySubmitButton时才会调用MyObjectDataSource的SelectedMethod。

    : - )