c# - 使用 EmptyDataTemplate 时如何删除 ASP.NET GridView 中的空行?

标签 c# asp.net gridview

我有一个 ASP.NET GridView,我想在 gridView 为空时在其中显示一系列文本框,以便用户可以添加更多数据。从功能上讲,它一切正常,但是当它呈现时,标题和我的文本框行之间似乎有一个额外的行。

	<table class="grid" cellspacing="0" rules="all" border="1" id="ContentPlaceHolder1_gridViewReferences" style="border-collapse:collapse;">
		<tr>
			<th align="left" scope="col" style="width:50px;">Id</th><th align="left" scope="col">Reference</th><th align="left" scope="col" style="width:400px;">Source</th><th align="left" scope="col" style="width:50px;">Edit</th><th align="left" scope="col" style="width:50px;">Delete</th>
		</tr><tr>
			<td colspan="5">
                <tr style="background-color: #E8ECED;">
                    <td>
                        <span style="display:inline-block;width:50px;">0</span>
                    </td>
                    <td>
                        <input name="ctl00$ContentPlaceHolder1$gridViewReferences$ctl02$textBoxReference" type="text" id="ContentPlaceHolder1_gridViewReferences_textBoxReference" class="ZenStyle" style="width:100%;" />
                    </td>
                    <td>
                        <input name="ctl00$ContentPlaceHolder1$gridViewReferences$ctl02$textBoxSource" type="text" id="ContentPlaceHolder1_gridViewReferences_textBoxSource" class="ZenStyle" style="width:400px;" />
                    </td>
                    <td>
                        <a id="ContentPlaceHolder1_gridViewReferences_LinkButton1" href="javascript:__doPostBack(&#39;ctl00$ContentPlaceHolder1$gridViewReferences$ctl02$LinkButton1&#39;,&#39;&#39;)" style="display:inline-block;width:50px;">Insert</a>
                        <div id="ContentPlaceHolder1_gridViewReferences_ValidationSummary1" style="display:none;">

			</div>
                    </td>
                    <td></td>
                </tr>
            </td>
		</tr>
	</table>

当我检查呈现的 HTML 时,确实有一个额外的行,但我不知道如何将我的文本框添加到它或删除它。我的网格的 .aspx 代码...我没有包括后面的代码或样式,因为我认为它不相关。

        <asp:GridView ID="gridViewReferences" runat="server" AutoGenerateColumns="False" CssClass="grid" EnableViewState="false"
        AlternatingRowStyle-CssClass="gridAltRow" RowStyle-CssClass="gridRow" ShowFooter="True"
        EditRowStyle-CssClass="gridEditRow" FooterStyle-CssClass="gridFooterRow" OnRowCancelingEdit="gridViewReferences_RowCancelingEdit"
        OnRowCommand="gridViewReferences_RowCommand" OnRowDataBound="gridViewReferences_RowDataBound" OnRowDeleting="gridViewReferences_RowDeleting"
        OnRowEditing="gridViewReferences_RowEditing" OnRowUpdating="gridViewReferences_RowUpdating" DataKeyNames="Id" ShowHeaderWhenEmpty="true">
        <Columns>
            <%--ID column ( which also acts as the key )--%>
            <asp:TemplateField HeaderText="Id" HeaderStyle-HorizontalAlign="Left">
                <HeaderStyle Width="50" />
                <ItemStyle Width="50" />
                <ItemTemplate>
                    <%# Eval("Id")%>
                </ItemTemplate>
            </asp:TemplateField>

             <%--Reference column--%>

            <asp:TemplateField HeaderText="Reference" HeaderStyle-HorizontalAlign="Left">
                <EditItemTemplate>
                    <asp:TextBox Width="100%" ID="textBoxReference" runat="server" Text='<%# Bind("Reference") %>' CssClass="ZenStyle"></asp:TextBox>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:TextBox Width="100%" ID="textBoxReference" runat="server" CssClass="ZenStyle"></asp:TextBox>
                </FooterTemplate>
                <ItemTemplate>
                    <%# Eval("Reference") %>
                </ItemTemplate>
            </asp:TemplateField>

            <%--Source column--%>

            <asp:TemplateField HeaderText="Source" HeaderStyle-HorizontalAlign="Left">
                <HeaderStyle Width="400" />
                <ItemStyle Width="400" />
                <EditItemTemplate>
                    <asp:TextBox Width="100%" ID="textBoxSource" runat="server" Text='<%# Bind("Source") %>' CssClass="ZenStyle"></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label Width="100%" ID="lblEmail" runat="server" Text='<%# Eval("Source")%>' CssClass="ZenStyle" />
                </ItemTemplate>
                <FooterTemplate>
                    <asp:TextBox Width="100%" ID="textBoxSource" runat="server" CssClass="ZenStyle" />
                </FooterTemplate>
            </asp:TemplateField>

            <%--Edit / Update  column--%>

            <asp:TemplateField HeaderText="Edit" ShowHeader="False" HeaderStyle-HorizontalAlign="Left">
                <HeaderStyle Width="50" />
                <ItemStyle Width="50" />
                <EditItemTemplate>
                    <asp:LinkButton ID="lnkUpdate" runat="server" CausesValidation="false" CommandName="Update2"
                        Text="Update" ValidationGroup="Update"></asp:LinkButton>
                    <asp:LinkButton ID="lnkCancel" runat="server" CausesValidation="False" CommandName="Cancel"
                        Text="Cancel"></asp:LinkButton>
                </EditItemTemplate>
                <FooterTemplate>
                    <asp:LinkButton ID="lnkAdd" runat="server" CausesValidation="True" CommandName="Insert" ValidationGroup="Insert" Text="Insert"></asp:LinkButton>
                    <asp:ValidationSummary ID="vsInsert" runat="server" ShowMessageBox="true" ShowSummary="false"
                        ValidationGroup="Insert" Enabled="true" HeaderText="Validation..." />
                </FooterTemplate>
                <ItemTemplate>
                    <asp:LinkButton ID="lnkEdit" runat="server" CausesValidation="False" CommandName="Edit"
                        Text="Edit"></asp:LinkButton>
                </ItemTemplate>
                <HeaderStyle HorizontalAlign="Left" />
            </asp:TemplateField>

            <%--Delete column--%>

            <asp:TemplateField HeaderText="Delete" ShowHeader="False" HeaderStyle-HorizontalAlign="Left">
                <HeaderStyle Width="50" />
                <ItemStyle Width="50" />
                <ItemTemplate>
                    <asp:Button ID="lnkDelete" runat="server" CausesValidation="False" CommandName="Delete" CssClass="myButton"
                        Text="Delete" OnClientClick="return confirm('Delete?')"></asp:Button>
                </ItemTemplate>
                <HeaderStyle HorizontalAlign="Left" />
            </asp:TemplateField>

        </Columns>

        <EmptyDataTemplate>
            <tr style="background-color: #E8ECED;">
                <td>
                    <asp:Label Width="50px" runat="server">0</asp:Label>
                </td>
                <td>
                    <asp:TextBox Width="100%" ID="textBoxReference" runat="server" Text='<%# Bind("Reference") %>' CssClass="ZenStyle"></asp:TextBox>
                </td>
                <td>
                    <asp:TextBox Width="400px" ID="textBoxSource" runat="server" Text='<%# Bind("Source") %>' CssClass="ZenStyle"></asp:TextBox>
                </td>
                <td>
                    <asp:LinkButton Width="50px" ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Insert" ValidationGroup="Insert" Text="Insert"></asp:LinkButton>
                    <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="true" ShowSummary="false" ValidationGroup="Insert" Enabled="true" HeaderText="Validation..." />
                </td>
                <td></td>
            </tr>
        </EmptyDataTemplate>
    </asp:GridView>

最佳答案

你可以解决这个问题

<EmptyDataRowStyle CssClass="EmptyDataClass" />
<EmptyDataTemplate>
 ...
</EmptyDataTemplate>

在你的 CSS 中:

.EmptyDataVacancyClass {
    display: none;
}

关于c# - 使用 EmptyDataTemplate 时如何删除 ASP.NET GridView 中的空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358033/

相关文章:

html - 带有框阴影的 CSS 列问题

asp.net - 单选按钮未在转发器中触发 itemcommand 事件

c# - 使用 System.Reflection

c# - 使用 RestSharp 发布带有虚线元素名称的 XML

c# - 为什么我开始无法将值 NULL 插入到计算列中?

c# - Dispose() 如何在我的 Controller 和 Repository 类中工作

.net - 如何禁用客户端上的 TextBox 单击 CheckBox

c# - 如何调试从外部应用程序调用的类库?

asp.net - 这种对搜索引擎友好的 URL 是我应该使用的 SEO 优势吗?是不是更专业?

javascript - 如何在没有 Ajax Toolkit 的情况下显示加载图像,直到 gridview 完全加载?