2011-01-26 16 views
1

私は、更新パネル内のグリッドビューにドロップダウンリストコントロール(SourceDD)を持っていて、ドロップダウンをクリックするたびにOnSelectedIndexChangedイベントが発生します。しかしその前に、完全なポストバックを行い、Page_Loadコード全体を実行します。これは私が望むものではありません。基本的には、OnSelectedIndexChangedイベントを実行するだけです。それは完全なポストバックを引き起こすわけではありません。私のイベントでは、SourceDDでの選択に基づいて次の列(SymbolDD)を有効/無効にするだけなので、イベントコードに特別なものはありません。グリッドビューを含むupdatepanel内に完全なポストバックを行わない方法がある場合は、lmkを使ってください。おかげでたくさん...GridViewのASP.NET DropDownListコントロールにより、SelectedIndexChangedイベントの完全なポストバックが発生します。

<asp:UpdatePanel ID="TestsPanel" runat="server" Visible="true" UpdateMode="Conditional" EnableViewState="false" ChildrenAsTriggers="true"> 
       <ContentTemplate>     <asp:GridView ID="TestGridView" runat="server" Visible="true" CssClass="GridViewRows" AlternatingRowStyle-CssClass="TableRowEven" 
        AutoGenerateColumns="false"> 
        <HeaderStyle CssClass="TableHead" /> 
         <Columns>               
          <asp:TemplateField Headertext="Source"> 
            <ItemTemplate>         
             <asp:DropDownList runat="server" ID="SourceDD" AutoPostBack="true" OnSelectedIndexChanged="SourceDD_SelectedIndexChanged"> 
             </asp:DropDownList>                       
            </ItemTemplate>         
          </asp:TemplateField>         
          <asp:TemplateField Headertext="Symbol"> 
            <ItemTemplate>         
             <asp:DropDownList runat="server" ID="SymbolDD"> 
             </asp:DropDownList>            
            </ItemTemplate>         
          </asp:TemplateField>       
         </Columns>      
        </asp:GridView>       
        </ContentTemplate> 

答えて

2

使用あなたが戻ってポストをしたいか、適切に背中部分のポストを処理するための後ろにコードを修正しようとしていない場合は、イベントを処理するためのJavaScript/AJAX。

は、これらのリンクを試してください: http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/ http://www.asp.net/ajax/tutorials/understanding-partial-page-updates-with-asp-net-ajax

+0

これは私が求めていることですが、どうすればjavascriptやその他の方法で完全なポストバックを避けることができますか?私はjavascriptを初めて使っているので、どこから始めたらいいのか分からない...ありがとう! – TC1924

1

私はダスティンに同意します。 javascriptを使用すると、適切なコントロールを有効にするためにコントロールのGridViewRowDataBoundイベントに配置する必要があります。

RowDatabound(object sender, GridViewRowEventArgs e) 
{ 
    ((DropDownList)e.FindControl("SourceDD")).Attributes("onchange", <onchangelogic>); 
    //use something like "document.getElementById('" +(DropDownList)e.FindControl("SymbolDD")).ClientID + "').enabled = true;" 
    //or maybe it was .disabled = false.... 
} 
0

よう

何かが実際には、この問題の解決策があります。 GridViewのTemplateFieldのItemTemplateにUpdatePanelを追加し、このUpdatePanelにDropDownListを追加することができます。 DropDownList "SelectedIndexChanged"イベントにAsyncPostBackTriggerを追加します。これにより、DropDownListの選択項目の変更時に発生するポストバックが部分的(つまり、ページ全体が更新されない)になります。

関連する問題