asp:Repeater和UI:Grid数据为空时如何显示表头?

发布时间 2023-07-29 14:40:19作者: 西瓜程序猿

一、asp:Repeater

Repeater 控件用于显示被绑定在该控件上的项目的重复列表。Repeater 控件可被绑定到数据库表、XML 文件或者其他项目列表。

 

1.1-前台页面代码

 1  <asp:Repeater ID="ImageTypeListNew" runat="server" OnItemCommand="ImageTypeListNew_ItemCommand">
 2                     <HeaderTemplate>
 3                         <table cellspacing="0" border="0" id="ctl00_contentHolder_ImageTypeList">
 4                             <tbody>
 5                                 <tr>
 6                                     <th>名称</th>
 7                                     <th>数量</th>
 8                                     <th>排序</th>
10                                 </tr>
11                     </HeaderTemplate>
12                     <ItemTemplate>
13                         <tr>
14                             <td>
15                                 <asp:HiddenField ID="hfItemIndex" runat="server" Value='<%#Container.ItemIndex %>' />
16                                 <asp:HiddenField ID="hfCategoryId" runat="server" Value='<%#Eval("CategoryId") %>' />
17                                 <Hi:HtmlDecodeTextBox ID="ImageTypeName" runat="server" Text='<%# Bind("CategoryName") %>' CssClass="forminput form-control" Visible='<%#Eval("CategoryId").ToString()!="0" %>' />
18                                 <asp:Label ID="ltlTypeName" runat="server" Text='<%# Bind("CategoryName") %>' Visible='<%#Eval("CategoryId").ToString()=="0" %>'></asp:Label>
19                             </td>
20                             <td>
21                                 <%#Eval("VideoCounts") %>
22                             </td>
23                             <td>
24                                 <asp:Label ID="Label1" runat="server" Text='<%# Bind("DisplaySequence") %>' Visible='<%#Eval("CategoryId").ToString()=="0" %>'></asp:Label>
25                                <asp:TextBox ID="txtDisplaySequence" runat="server" Button="btnSearchButton" CssClass="forminput form-control" value='<%# Eval("DisplaySequence") %>' Visible='<%#Eval("CategoryId").ToString()!="0" %>' onkeyup="this.value=this.value.replace(/\D/g,'')"  style="width: 60px;" onafterpaste="this.value=this.value.replace(/\D/g,'')" />
26                             </td>
29                         </tr>
30                     </ItemTemplate>
31                     <FooterTemplate></tbody></table></FooterTemplate>
32                 </asp:Repeater>

 

 1.2-后台页面代码(核心)

 代码示例:

 1         private void GetImageType()
 2         {
 3             DataTable videoCategories = GalleryHelper.GetVideoCategories(0);
 4 
 5             //如果数据为空,设置第一行数据
 6             DataRow row = videoCategories.NewRow();
 7             row["CategoryId"] = "";
 8             row["CategoryName"] = "默认分类";
 9             row["DisplaySequence"] = "";
10             row["VideoCounts"] = "";
11             videoCategories.Rows.InsertAt(row, 0);
12 
13             this.ImageTypeListNew.DataSource = videoCategories;
14             this.ImageTypeListNew.DataBind();
15         }

 

1.3-使用方法

在页面加载时【Page_Load】可调用,以及删除/排序/编辑等场景也可调用。

 

 

二、UI:Grid/GridView

 显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据,例如 GridView 控件。通过使用 GridView 控件,您可以显示、编辑和删除多种不同的数据源(例如数据库、XML 文件和公开数据的业务对象)中的数据。

1.1-前台页面代码

 1  <UI:Grid ID="grdTopCategries" DataKeyNames="CategoryId" runat="server" ShowHeader="true" AutoGenerateColumns="false" CssClass="table table-striped" GridLines="None" Width="100%">
                <Columns>
                    <asp:TemplateField HeaderText="分类名称">
                        <ItemTemplate>
                            <span class="icon" categoryid='<%# Eval("CategoryId") %>' parentid='<%# Eval("ParentCategoryId") %>' id="spShowImage" runat="server">
                                <img src="../images/jian.gif" width="24" height="24" /></span>
                            <span class="Name" id="spCategoryName"><a href='<%# "/product_detail/"+Eval("CategoryId")%>' target="_blank">
                                <asp:Literal ID="lblCategoryName" runat="server" /></a></span>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField HeaderText="URL重写名称" DataField="RewriteName" />
                    <asp:TemplateField HeaderText="排序">
                        <ItemTemplate>
                            <asp:TextBox ID="txtSequence" CssClass="form-control" runat="server" Text='<%# Eval("DisplaySequence") %>' Width="80px" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </UI:Grid>

 

 1.2-后台页面代码(核心)

 

 代码示例:

 1    DataTable dt = new DataTable();
 2             if (inviteCodeList.TotalRecords == 0)
 3             {
 4                 dt.Columns.Add("SaleId");
 5                 dt.Columns.Add("UserId");
 6                 dt.Columns.Add("TransactionDate");
 7                 dt.Columns.Add("IncomeType");
 8                 dt.Columns.Add("TransactionNo");
 9                 dt.Columns.Add("TransactionType");
10                 dt.Columns.Add("RefundId");
11                 dt.Columns.Add("SaleName");
12                 dt.Columns.Add("UserName");
13                 dt.Columns.Add("OrderType");
14                 dt.Columns.Add("PaymentType");
15                 dt.Columns.Add("DeliverPrincipal");
16                 dt.Columns.Add("CommissionRate");
17                 dt.Columns.Add("Tax");
18                 dt.Columns.Add("DeliverIncome");
19                 dt.Columns.Add("ApprovedStatus");
20                 dt.Columns.Add("Reason");
21                 dt.Columns.Add("SettlementId");
22                 dt.Columns.Add("Amount");
23                 dt.Columns.Add("ApprovedStatusId");
24 
25                 if (dt.Rows.Count == 0)
26                 {
27                     dt.Rows.Add(dt.NewRow());
28                 }
29                 this.grdSaleInviteCode.DataSource = dt;
30                 this.grdSaleInviteCode.DataBind();
31             }