2009-01-29 49 views
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> 

在我的服務器端事件,我只是啓用/禁用文本框。

回答

0

您是否已經完成查看源代碼以確認它實際上是將其呈現在HTML本身的該位置?如果表格格式不正確,瀏覽器有時會在表格之外呈現標籤。它看起來可以在HTML本身中正確定義,但缺少結束標籤等可能導致它以這種方式呈現。

0

當更新面板發回服務器時,它將所有內容都發回(包括viewstate)。爲什麼不只是做一些簡單的JavaScript?它會更有效率。

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> 

您應該全部修好了。

+0

- 或者也許是TR的直接孩子。 – 2009-01-29 17:02:03

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>