6

私のasp.net AJAX更新パネルが更新されたときに問題が発生し、それが私のコードの下にある場所ではなく、テーブルの上部にコンテンツをレンダリングします:

<tr>
   <td>
   </td>
   <td>
      <asp:CheckBox ID="ddCheckbox" runat="server" Text="Checkbox"
           AutoPostBack="true" OnCheckedChanged="ddCheckboxChanged" />
   </td>
</tr>

    <asp:UpdatePanel ID="uxUpdatePanel" runat="server" RenderMode="Inline" UpdateMode="Conditional">
       <ContentTemplate>
          <tr>
             <td>
               Some Field:
             </td>
              <td>
                 <asp:TextBox ID="ddSomeField" runat="server" />
              </td>
            </tr>
          </ContentTemplate>
          <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ddCheckbox" EventName="CheckedChanged" />
          </Triggers>
    </asp:UpdatePanel>

私のサーバー側のイベントでは、テキストボックスを有効/無効にしています。

4

4 に答える 4

8

1) カスタム updatepanel コントロールを作成します ( SingingEels からコピー/貼り付け)

2) このカスタム updatepanel コントロールを属性で使用するRenderedElement="TBODY"

3) 次のようにテーブルをネストします。

<TABLE>
  <TR>
    <TD>outside updatepanel</TD>
  </TR>
  <SingingEels:SemanticUpdatePanel ID="myUpdatePanel" runat="server" RenderedElement="TBODY">
    <ContentTemplate>
      <TR>
        <TD>inside updatepanel - 1th row</TD>
      </TR>
      <TR>
        <TD>inside updatepanel - 2nd row</TD>
      </TR>
      <TR>
        <TD>inside updatepanel - last row</TD>
      </TR>
    </ContentTemplate>
  </SingingEels:SemanticUpdatePanel>
  <TR>
    <TD>outside updatepanel</TD>
  </TR>
</TABLE>
于 2009-03-29T20:48:35.207 に答える
4

更新パネルをネストする方法が原因だと思います。更新パネルをテーブルではなく td の子に変更する場合:

<tr>
  <td>
    Some Field:
  </td>
  <td>
    <asp:UpdatePanel ID="uxUpdatePanel" runat="server" RenderMode="Inline" UpdateMode="Conditional">
       <ContentTemplate>
         <asp:TextBox ID="ddSomeField" runat="server" />
       </ContentTemplate>
       <Triggers>
          <asp:AsyncPostBackTrigger ControlID="ddCheckbox" EventName="CheckedChanged" />
       </Triggers>
    </asp:UpdatePanel>
   </td>
 </tr>

あなたはすべて直すべきです。

于 2009-01-29T16:55:46.880 に答える
0

ビューソースを実行して、HTML自体のその場所に実際にレンダリングされていることを確認しましたか?テーブルの形式が正しくない場合、ブラウザはテーブルの外にタグをレンダリングすることがあります。HTML自体で適切に定義されているように見えるかもしれませんが、終了タグがないなどの理由で、そのようにレンダリングされる可能性があります。

于 2009-01-29T16:52:45.640 に答える
0

更新パネルがサーバーにポストバックすると、すべて(ビューステートを含む)がポストバックされます。単純なJavaScriptを実行してみませんか?それははるかに効率的でしょう。

于 2009-01-29T16:55:45.540 に答える