【问题标题】:ASP.NET - GridView, adding header row in codeASP.NET - GridView,在代码中添加标题行
【发布时间】:2013-10-02 14:16:53
【问题描述】:

我在网上搜索了各种示例,并尝试了其中的每一个。无论如何,我都会遇到同样的错误。我正在尝试将标题行添加到代码中的 GridView 控件。我尝试在从 gridview prerender 到页面的所有事件的每个可能事件中添加以下代码。同样的交易。总是得到错误:表格必须包含按页眉、正文和页脚顺序排列的行部分。

我已将页面精简到最基本的部分 - 删除了母版页和所有 CSS。

这是aspx和网格视图代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Shipping.Admin.Default" Title="Apps - Shipping" %>
<html>
<head><title></title></head>
<body>
<form runat="server" id="form1">
<br />
<h1>Admin Page</h1>
<br />

            <asp:GridView ID="gvShipments" runat="server" AllowSorting="True" 
                AutoGenerateColumns="False" onsorting="gvShipments_Sorting" Width="100%" 
                AllowPaging="True" onpageindexchanging="gvShipments_PageIndexChanging" 
                PageSize="50">                 
                 <PagerSettings Position="TopAndBottom" />
                <Columns>
                    <asp:BoundField DataField="RequestDate" HeaderText="Request Date" SortExpression="dtRequestDate" />
                    <asp:BoundField DataField="Requestor" HeaderText="Requestor" SortExpression="Requestor" />
                    <asp:BoundField DataField="CompanyName" HeaderText="Company" SortExpression="CompanyName" />
                    <asp:BoundField DataField="ShipmentDescription" HeaderText="Description" SortExpression="ShipmentDescription" />
                    <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                    <asp:BoundField DataField="State" HeaderText="State" SortExpression="State" />
                    <asp:BoundField DataField="ShipmentType" HeaderText="Shipment Type" SortExpression="ShipmentType" />
                    <asp:BoundField DataField="ServiceLevel" HeaderText="Service Level" SortExpression="ServiceLevel" />
                    <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
                    <asp:HyperLinkField  DataNavigateUrlFields="ShipmentId" DataNavigateUrlFormatString="Shipment.aspx?CatId=Admin&amp;sID={0}" Text="&nbsp;&nbsp;&nbsp;edit" />
               </Columns>
           </asp:GridView>       
<br />
</form>
</body>
</html>

这里是代码隐藏的片段。该方法在 Page_Load 方法中被调用:

private void LoadGridView()
        {
            DataSet ds = new DataSet();
            ds = GetDataset();

            DataTable dtRequests = ds.Tables["Admin"];
            DataView dv = new DataView(dtRequests);

            if (ViewState["sortexpression"] != null)
            {
                dv.Sort = ViewState["sortexpression"].ToString() + " " + ViewState["sortdirection"].ToString();
            }
            else
            {
                dv.Sort = "dtRequestDate DESC";
            }

            gvShipments.DataSource = dv;
            gvShipments.DataBind();

            **if (gvShipments.Rows.Count > 0)
            {
                this.gvShipments.UseAccessibleHeader = true;
                this.gvShipments.HeaderRow.TableSection = TableRowSection.TableHeader;
            }**    

            ds.Dispose();
        }

我已经尝试将代码添加到加粗的 IF 语句中。我难住了。请帮忙!

谢谢

【问题讨论】:

  • 你想设置标题文本??
  • 我想强制 和 在 gridview 中呈现。
  • 为什么需要它们?如果你这样做了 - 你不能在客户端代码中添加它们吗?
  • 这是我需要使用的 jQuery 库所必需的。我如何将它们添加到客户端代码中?
  • 您是否需要代码隐藏中的任何其他代码才能进行正确的评估?我希望那里的一些 ASP.NET 大师可以提供帮助。

标签: asp.net


【解决方案1】:

试试这个添加 Page_PreRender 事件并在其中发布你的代码,然后你的代码如下所示

protected void Page_PreRender(object sender, EventArgs e)
 {
     if (gvShipments.Rows.Count > 0)
     {
         gvShipments.UseAccessibleHeader = true;
         gvShipments.HeaderRow.TableSection = TableRowSection.TableHeader;
     }
}

页面生命周期

【讨论】:

  • 说明:在执行当前网络请求的过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。异常详细信息:System.Web.HttpException:表必须包含按页眉、正文和页脚顺序排列的行部分。 [堆栈跟踪省略] 版本信息:Microsoft .NET Framework 版本:2.0.50727.5472; ASP.NET 版本:2.0.50727.5471
  • 查看您的dataview 中有多少条记录,您是否使用过Page_PreRender 事件
  • 你可以在你的问题中添加这个,它对我们来说很容易阅读,或者创建新问题
猜你喜欢
相关资源
最近更新 更多
热门标签