2012-05-15 56 views
0

我有一個asp.net頁面:一個DropDownList.SelectedIndexChanged內一個UpdatePanel導致OUTSIDE在UpdatePanel的ObjectDataSource.SelectMethod被調用

  • 一個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在一個單獨的更新面板,但頁面梁具有相同的行爲:-(

回答

0

我找到了解決辦法

  1. 取代了asp:ControlParameters with asp:Parameters。
  2. 在MySubmitButton.Click()事件中添加了對MyGridView.DataBind的調用
  3. 已分配v可以看到MyObjectDataSource.Selecting()事件中的參數。

現在僅當用戶單擊MySubmitButton時,纔會調用MyObjectDataSource的SelectedMethod。

:-)

相關問題