【问题标题】:Update Panel rendering table row wrong更新面板渲染表行错误
【发布时间】:2010-10-04 07:03:51
【问题描述】:

当我的 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>

在我的服务器端事件中,我只是启用/禁用文本框。

【问题讨论】:

    标签: asp.net asp.net-ajax updatepanel


    【解决方案1】:

    1) 创建自定义更新面板控件(从SingingEels 复制/粘贴)

    2) 将此自定义更新面板控件与属性 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>
    

    【讨论】:

      【解决方案2】:

      我相信这是由于您嵌套更新面板的方式。如果您将更新面板更改为 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>
      

      你们应该都修好了。

      【讨论】:

      • -- 或者可能是 TR 的直接子代。
      【解决方案3】:

      您是否已完成查看源代码以确认它实际上是在 HTML 本身的该位置呈现它?如果表格格式错误,浏览器有时会在表格之外呈现标签。它可能看起来在 HTML 本身中被正确定义,但缺少结束标记等可能会导致它以这种方式呈现。

      【讨论】:

        【解决方案4】:

        当更新面板回发到服务器时,它会发回所有内容(包括视图状态)。为什么不只做一些简单的javascript?这样会更有效率。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-26
          • 1970-01-01
          • 1970-01-01
          • 2014-10-11
          • 1970-01-01
          • 2018-10-03
          • 1970-01-01
          • 2016-04-16
          相关资源
          最近更新 更多