1

次の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 更新パネルに配置しようとしましたが、ページ敷居は同じ動作をしています :-(

4

1 に答える 1

1

解決策を見つけました。

  1. asp:ControlParameters を asp:Parameters に置き換えました。
  2. MySubmitButton.Click() イベントに MyGridView.DataBind への呼び出しを追加しました。
  3. MyObjectDataSource.Selecting() イベントのパラメーターに割り当てられた値。

MyObjectDataSource の SelectedMethod は、ユーザーが MySubmitButton をクリックしたときにのみ呼び出されるようになりました。

:-)

于 2012-05-16T23:39:26.020 に答える