为什么我的gridview ASP.NET中有一个<td> </td>

问题描述 投票:0回答:3

我有一个由asp.net生成的gridview。我有一个 id 行,我使用 css 隐藏了它。然而,这会导致视觉问题,这就是问题所在。

我知道问题是由于html中最后一个td引起的,看起来像这样

<td>&nbsp;</td>.

你可以在这张图片上看到吗?

当我删除那行代码时,它就可以工作,我的网格视图看起来像这样。

为什么asp会生成这段代码

<td>&nbsp;</td>
。我怎样才能删除它任何帮助将不胜感激,谢谢。

这是我的 gridview 的代码

<asp:GridView ID="gvLocation" runat="server" AutoGenerateColumns="false" ShowFooter="true" 
            ShowHeaderWhenEmpty="true" AllowPaging="True" OnPageIndexChanging="gvLocation_PageIndexChanging"
            OnRowEditing="gvLocation_RowEditing" OnRowCancelingEdit="gvLocation_RowCancelingEdit"
            AllowSorting="true" onsorting="gvLocation_Sorting" ridLines="None" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt" CellPadding="3">
            <%-- Theme Properties --%>
            <Columns>  
                <asp:TemplateField HeaderText="Armario" SortExpression="armario">
                    <ItemTemplate>
                        <asp:Label CssClass="gridTextbox" ID="lblCloset" Text='<%# Eval("armario")%>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox CssClass="gridTextbox" ID="txtCloset" Text='<%# Eval("armario")%>' runat="server" />
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox CssClass="gridTextbox" ID="txtClosetFooter" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>  
                <asp:TemplateField HeaderText="Cajon" SortExpression="cajon">
                    <ItemTemplate>                       
                        <asp:Label CssClass="gridTextbox" ID="lblDrawer" Text='<%# Eval("cajon")%>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox CssClass="gridTextbox" ID="txtDrawer" Text='<%# Eval("cajon")%>' runat="server" />
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox  CssClass="gridTextbox" ID="txtDrawerFooter" runat="server" />
                    </FooterTemplate>
                </asp:TemplateField>       
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ImageUrl="~/Images/edit.png" runat="server" CommandName="Edit" ToolTip="Edit" Width="20px" Height="20px"/>
                        <asp:ImageButton ImageUrl="~/Images/delete.png" runat="server" CommandName="Delete" ToolTip="Delete" Width="20px" Height="20px"  OnClick="deleteItem"/>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:ImageButton ImageUrl="~/Images/save.png" runat="server" CommandName="Update" ToolTip="Update" Width="20px" Height="20px"  OnClick="updateItem"/>
                        <asp:ImageButton ImageUrl="~/Images/cancel.png" runat="server" CommandName="Cancel" ToolTip="Cancel" Width="20px" Height="20px"/>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:ImageButton ImageUrl="~/Images/addnew.png" ID="addNewLocation" runat="server" CommandName="AddNew" ToolTip="Add New" Width="20px" Height="20px" OnClick="addNew"/>
                    </FooterTemplate>
                </asp:TemplateField>
                 <asp:TemplateField HeaderText="ubicacion id" SortExpression="ubicacion_componente_id" ItemStyle-CssClass="hideGridColumn" HeaderStyle-CssClass="hideGridColumn">
                    <ItemTemplate>
                        <asp:Label CssClass="gridTextbox" ID="lblLocationID"  Text='<%# Eval("ubicacion_componente_id")%>' runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>  
            </Columns>
        </asp:GridView>

这里添加隐藏第一个 id 列的 css 代码

.hideGridColumn
{
    display: none;
}
html css asp.net gridview
3个回答
0
投票

有2个解决方案供您删除多余的

<td>&nbsp;</td>

Javascript版本

var table = document.getElementById("mytable");
for (var i = 0; i < 3; i++) {
  for (var k = 0; k < 5; k++) {
    var str = table.rows[i].cells[k].innerHTML;
    str = str.replace(/(&nbsp;)*/g, '');
    if (str.length) alert(str);
  }
};

如何使用 javascript 删除这种情况?

Jquery版本

$(function() {
  $("table tr").each(function() {
    var tds = $(this).find("td"); //find all td
    var descriptionTD = tds.eq(1); //get the td for the description

    //get the remaining tds that only contain "&nbsp;"
    var emptytds = tds.not(descriptionTD).filter(function() {
      return $(this).html() === "&nbsp;";
    });

    //if all the remaing tds are empty
    if (emptytds.length === tds.length - 1) {
      emptytds.remove();
      descriptionTD.prop("colspan", tds.length).prop("width", "100%");
    }
  });
});

删除带有 的 并制作子标题


0
投票
<td>&nbsp;</td>

这是推荐的模式,因为它适用于每个浏览器。尝试在 Edge 浏览器中不使用   来运行表格,您会发现这会破坏表格布局。

 <td>/td>

Without ' '

<td>&nbsp;</td>

With ' '


0
投票

这个问题可能有很多,我设法通过在 GridView ShowFooter="false" 中包含一个标签来解决它,它为我解决了它,我也遇到了同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.