【问题标题】:Remove empty row append by Gridview删除 Gridview 附加的空行
【发布时间】:2015-03-03 07:29:52
【问题描述】:

我有一个这样的网格视图

<asp:GridView ID="gridBranchTiming" EmptyDataText="No Records Found" runat="server" AutoGenerateColumns="False" BorderWidth="0"
                    AllowPaging="true" PageSize="15" Width="100%" OnPageIndexChanging="gridBranchTiming_PageIndexChanging"
                    CssClass="mGrid" OnRowDeleting="gridBranchTiming_RowDeleting"
                    OnRowCommand="gridBranchTiming_RowCommand" OnRowCreated="gridBranchTiming_RowCreated" >

                    <AlternatingRowStyle CssClass="alt" />
                    <PagerStyle CssClass="pgr" />
                    <Columns>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <th rowspan="2">#</th>
                                <th rowspan="2">Branch ID</th>
                                <th rowspan="2">From</th>
                                <th rowspan="2">To</th>
                                <th colspan="2">Sunday </th>
                                <th colspan="2">Monday </th>
                                <th colspan="2">Tuesday </th>
                                <th colspan="2">Wednesday </th>
                                <th colspan="2">Thursday </th>
                                <th colspan="2">Friday </th>
                                <th colspan="2">Saturday </th>
                                <th rowspan="2">Edit</th>
                                <th rowspan="2">Delete</th>
                                <tr>
                                    <th></th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>

                                </tr>
                            </HeaderTemplate>
                            <ItemTemplate>
                                <td><%# Container.DataItemIndex + 1 %></td>
                                <td><%#Eval("BranchID") %></td>
                                <td><%#Eval("fromDate") %></td>
                                <td><%#Eval("toDate") %></td>
                                <td><%#Eval("SundayIn") %></td>
                                <td><%#Eval("SundayOut") %></td>
                                <td><%#Eval("MondayIn") %></td>
                                <td><%#Eval("MondayOut") %></td>
                                <td><%#Eval("TuesdayIn") %></td>
                                <td><%#Eval("TuesdayOut") %></td>
                                <td><%#Eval("WednesdayIn") %></td>
                                <td><%#Eval("WednesdayOut") %></td>
                                <td><%#Eval("ThursdayIn") %></td>
                                <td><%#Eval("ThursdayOut") %></td>
                                <td><%#Eval("FridayIn") %></td>
                                <td><%#Eval("FridayOut") %></td>
                                <td><%#Eval("SaturdayIn") %></td>
                                <td><%#Eval("SaturdayOut") %></td>
                                <td>
                                    <a class="aEdit" title="Edit" href='EditBranchTiming.aspx?Id=<%#Eval("BranchTimeEntryID") %>'>Edit</a>
                                </td>
                                <td>
                                    <asp:LinkButton ID="lnkDelete" CssClass="aDelete" ToolTip="Delete" runat="server" CommandName="delete" OnClientClick=' javascript:return confirm("Are you sure you want to delete?"); '
                                        CommandArgument='<%# DataBinder.Eval(Container.DataItem, "BranchTimeEntryID") %>'>Delete</asp:LinkButton>

                                </td>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

但是当它在浏览器中呈现时,我的网格中会附加一个额外的空列。我不知道那个空行是如何追加的。

这是输出的样子

检查时的浏览器代码是这样的

<table class="mGrid" cellspacing="0" rules="all" id="ContentPlaceHolder1_gridBranchTiming" style="border-width:0px;width:100%;border-collapse:collapse;">
        <tbody><tr>
            <th scope="col">
                                </th><th rowspan="2">#</th>
                                <th rowspan="2">Branch ID</th>
                                <th rowspan="2">From</th>
                                <th rowspan="2">To</th>
                                <th colspan="2">Sunday </th>
                                <th colspan="2">Monday </th>
                                <th colspan="2">Tuesday </th>
                                <th colspan="2">Wednesday </th>
                                <th colspan="2">Thursday </th>
                                <th colspan="2">Friday </th>
                                <th colspan="2">Saturday </th>
                                <th rowspan="2">Edit</th>
                                <th rowspan="2">Delete</th>
                                </tr><tr>
                                    <th></th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>
                                    <th>From</th>
                                    <th>To</th>

                                </tr>

        <tr>
            <td>
                                </td><td>1</td>
                                <td>NBAD004</td>
                                <td>18/02/2015</td>
                                <td>24/02/2015</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>
                                    <a class="aEdit" title="Edit" href="EditBranchTiming.aspx?Id=6">Edit</a>
                                </td>
                                <td>
                                    <a onclick=" javascript:return confirm(&quot;Are you sure you want to delete?&quot;); ;" id="ContentPlaceHolder1_gridBranchTiming_lnkDelete_0" title="Delete" class="aDelete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$gridBranchTiming$ctl02$lnkDelete','')">Delete</a>

                                </td>

        </tr><tr class="alt">
            <td>
                                </td><td>2</td>
                                <td>NBAD004</td>
                                <td>01/01/2014</td>
                                <td>31/12/2014</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>11:00</td>
                                <td>14:00</td>
                                <td>00:00</td>
                                <td>00:00</td>
                                <td>
                                    <a class="aEdit" title="Edit" href="EditBranchTiming.aspx?Id=1019">Edit</a>
                                </td>
                                <td>
                                    <a onclick=" javascript:return confirm(&quot;Are you sure you want to delete?&quot;); ;" id="ContentPlaceHolder1_gridBranchTiming_lnkDelete_1" title="Delete" class="aDelete" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$gridBranchTiming$ctl03$lnkDelete','')">Delete</a>

                                </td>

        </tr>
    </tbody></table>

有什么办法摆脱那个空列吗????

【问题讨论】:

  • 尝试将 alluserstoaddrows 属性设置为 false。
  • 这不是你应该使用GridView的方式。每个模板创建一个th(HeaderTemplate) 和td(ItemTemplate)。在所有可能性中,当前设计都会输出浏览器自动更正的无效标记。您应该使用asp:ListView。您在项目中使用 jQuery 吗?
  • 是的,我在我的项目中使用 jQuery

标签: asp.net gridview


【解决方案1】:

这是一个非常丑陋的 hack,它将解决您的问题。

$(document).ready(function(){
    $("table.mGrid th:first-child").remove();
    $("table.mGrid td:first-child").remove();
});

但你一定真的在使用这样的 ListView。

<asp:ListView ID="ListView1" runat="server" DataKeyNames="job_id" DataSourceID="SqlDataSource1">
    <LayoutTemplate>
        <table>
            <thead>
                <tr runat="server">
                    <th rowspan="2">#</th>
                    <th rowspan="2">Branch ID</th>
                    <th rowspan="2">From</th>
                    <th rowspan="2">To</th>
                    <th colspan="2">Sunday </th>
                    <th colspan="2">Monday </th>
                    <th colspan="2">Tuesday </th>
                    <th colspan="2">Wednesday </th>
                    <th colspan="2">Thursday </th>
                    <th colspan="2">Friday </th>
                    <th colspan="2">Saturday </th>
                    <th rowspan="2">Edit</th>
                    <th rowspan="2">Delete</th>
                </tr>
                <tr>
                    <th></th>
                    <th>From</th>
                    <th>To</th>
                    <th>From</th>
                    <th>To</th>
                    <th>From</th>
                    <th>To</th>
                    <th>From</th>
                    <th>To</th>
                    <th>From</th>
                    <th>To</th>
                    <th>From</th>
                    <th>To</th>
                    <th>From</th>
                    <th>To</th>
                </tr>
            </thead>
            <tbody>
            <tr runat="server" id="itemPlaceholder" />
            </tbody>
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td><%# Container.DataItemIndex + 1 %></td>
            <td><%#Eval("BranchID") %></td>
            <td><%#Eval("fromDate") %></td>
            <td><%#Eval("toDate") %></td>
            <td><%#Eval("SundayIn") %></td>
            <td><%#Eval("SundayOut") %></td>
            <td><%#Eval("MondayIn") %></td>
            <td><%#Eval("MondayOut") %></td>
            <td><%#Eval("TuesdayIn") %></td>
            <td><%#Eval("TuesdayOut") %></td>
            <td><%#Eval("WednesdayIn") %></td>
            <td><%#Eval("WednesdayOut") %></td>
            <td><%#Eval("ThursdayIn") %></td>
            <td><%#Eval("ThursdayOut") %></td>
            <td><%#Eval("FridayIn") %></td>
            <td><%#Eval("FridayOut") %></td>
            <td><%#Eval("SaturdayIn") %></td>
            <td><%#Eval("SaturdayOut") %></td>
            <td>
                <a class="aEdit" title="Edit" 
                    href='EditBranchTiming.aspx?Id=<%#Eval("BranchTimeEntryID") %>'>Edit</a>
            </td>
            <td>
            <asp:LinkButton ID="lnkDelete" runat="server" 
                CommandArgument='<%# DataBinder.Eval(Container.DataItem, "BranchTimeEntryID") %>'
                CommandName="delete"
                CssClass="aDelete" 
                ToolTip="Delete"  
                OnClientClick=' javascript:return confirm("Are you sure you want to delete?"); '>Delete</asp:LinkButton>
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>

ASP.NET 框架引入了asp:ListView,为生成的标记提供了更大的灵活性。另一种方法是像这样使用GridViews RowCreated 事件。
链接:https://stackoverflow.com/a/18327885/17447

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2012-10-20
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多