2017-11-27 6 views
0

ポストバック後にコントロールにフォーカスを設定しようとしていますが、機能していません。以下はその詳細です。フォーカスがasp.netで動作しない

パネル内にコードがあります。 Panelはajaxを使用して開いて閉じます。 ラジオボタンがパネルの内側にあります。ラジオボタンをクリックすると、そのコントロールに集中しますが、ポストバックのためにページが開始されます。

私は試しました 1. SetFocus(controlID); 2. controlID.Focus(); 3.フォーカスをjavacriptのコントロールにも設定します( )。解決策はありません。

これは長いページです...もっとパネルがあります。なぜ私のソリューションが機能していないのか分かりません。背後

<Panel> first panel comes here...</Panel> 
<div class="demoarea"> 
<asp:Panel ID="pnl_2_Header" runat="server" CssClass="collapsePanelHeader" Height="30px"> 
     <div style="padding:5px; cursor: pointer; vertical-align: middle;"> 
      <div style="float: left;">User's Information</div> 
      <div style="float: left; margin-left: 20px;"> 
       <asp:Label ID="lbl_2_Header" runat="server" Visible="False">(Show Details...)</asp:Label> 
      </div> 
      <div style="float: right; vertical-align: middle;"> 
       <asp:ImageButton ID="img_2_Header" runat="server" ImageUrl="~/images/expand_blue.jpg" AlternateText="(Show Details...)" Visible="False"/> 
      </div> 
     </div> 
    </asp:Panel> 
<asp:Panel ID="pnl_2" runat="server" CssClass="collapsePanel" Height="0" BorderStyle="solid" BorderWidth="1"> 
     <table width="100%" style="text-align:left;font-weight:300;" cellpadding="7"> 
      <tr valign="top"> 
       <td style="width:50%;"> 
        School in Primary 6 : 
        <br /><br /> 
        <asp:RadioButton ID="rdoPri1" runat="server" 
         Text="sometext" GroupName="pri" value="1" 
         AutoPostBack="True" oncheckedchanged="rdoPri1_CheckedChanged" /> <br /> 



        <asp:RadioButton ID="rdoPriOther" runat="server" Text="Others" 
         GroupName="pri" value="2" AutoPostBack="True" 
         oncheckedchanged="rdoPriOther_CheckedChanged" />  

        &nbsp;&nbsp;<asp:TextBox ID="txtPriOther" CssClass="txt" Width="50%" runat="server"></asp:TextBox> 
        <asp:RequiredFieldValidator ID="reqPriOther" ValidationGroup="pnl_2" Visible="false" runat="server" ControlToValidate="txtPriOther" Text="*" ErrorMessage="*" SetFocusOnError="true"></asp:RequiredFieldValidator> 
       </td> 
</tr> 
</table> 
</asp:Panel> 
</div> 
<ajaxToolkit:CollapsiblePanelExtender ID="cpe_2" runat="Server" 
    TargetControlID="pnl_2" 
    ExpandControlID="pnl_2_Header" 
    CollapseControlID="pnl_2_Header" 
    Collapsed="True" 
    TextLabelID="lbl_2_Header" 
    ImageControlID="img_2_Header"  
    ExpandedText="(Hide Details...)" 
    CollapsedText="(Show Details...)" 
    ExpandedImage="~/images/collapse_blue.jpg" 
    CollapsedImage="~/images/expand_blue.jpg" 
    SuppressPostBack="true" 
    SkinID="CollapsiblePanelDemo" /> 


<Panel> 3rd Panel </Panel> 
... 

コード:以下の私のコード添付

protected void rdoPri1_CheckedChanged(object sender, EventArgs e) 
{ 
    -- Some code here -- 
    //SetFocus(pnl_2); 
    rdoPri1.Focus(); 
} 

答えて

0

を、ページの読み込み中に同じcontrol.Focus()setfocusを追加し、必要に応じてのような条件を追加しますフォームサーバーコントロールイベントは、自動ポストバックがtrに設定されているときにポストバックをトリガーしますue。コントロールの1つがポストバックをトリガした後、Set focusが期待どおりに機能しないことを意味します。 私の個人的な意見では、このようなUI/UXデザインが必要なので、代わりにクライアントスクリプトを使用することをお勧めします。

+0

あなたはJavaScriptの背後にあるコードからjavascript関数を呼び出し、javascriptでフォーカスを設定するのですか? – sara

+0

ラジオボタンのCheckChangedイベントを削除し、代わりにjqueryイベントまたはJavaScriptイベントを使用します。 – Mike

0

は、Web

//in page load 
if (rdoButton1.Checked) {//setfocus here} 
+0

既に試したオプションです。 didntは私のために働く。 – sara

関連する問題