2012-01-07 108 views
1

我似乎无法更改页脚文本。我也尝试了排序的事件,但没有任何反应。我想要做的就是显示状态消息。这里是我的代码:在GridView中更改页脚文本

protected void PageSettings_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    if (((GridView)sender).EditIndex > -1) 
    { 
    e.Cancel = true; 
    } 
    else 
    { 
    // tried this on sorted aswell but can't change footer text 
    GridViewRow row = ((GridView)sender).FooterRow as GridViewRow; 
    Label lblStatus = new Label{ ID="lblStatus", Text="Sorting Column <b>\"" + e.SortExpression + "\" " + e.SortDirection + "</b>"}; 
    row.Cells[0].Text = "Hello World"; //.Controls.Add(lblStatus);    
    } 
} 

protected void PageSettings_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row != null && e.Row.RowType == DataControlRowType.Header) 
    { 

    } 
    else if (e.Row != null && e.Row.RowType == DataControlRowType.Footer) 
    { 
    int count = e.Row.Cells.Count; 
    for (int i = count - 1; i >= 1; i += -1) 
    { 
     e.Row.Cells.RemoveAt(i); 
    } 
    e.Row.Cells[0].ColumnSpan = count; 
    e.Row.Cells[0].Controls.Add(new Literal { ID = "lblStatus" }); 
    // can't FindControl or change Literals either 
    e.Row.Cells[0].Text = "Hello World"; // works here but not on sorting event 
    }   
} 

<asp:GridView ID="PageSettings" runat="server" 
    AllowPaging="true" AllowSorting="true" 
    AutoGenerateColumns="false" 
    AutoGenerateDeleteButton="true" 
    AutoGenerateEditButton="true" 
    ShowFooter="true" 
    DataSourceID="ObjectDataSourcePages" 
    OnLoad="PageSettings_Load" 
    OnRowDataBound="PageSettings_DataBound" 
    OnRowCreated="PageSettings_RowCreated" 
    OnRowEditing="PageSettings_RowEditing" 
    OnRowCancelingEdit="PageSettings_RowCancelingEdit"  
    OnPageIndexChanging="PageSettings_PageIndexChanging" 
    OnSorting="PageSettings_Sorting" 
    OnSorted="PageSetting_Sorted"  
    PageSize="2">   
    <Columns> 
    <asp:TemplateField HeaderText="Page Name" HeaderStyle-HorizontalAlign="Left" SortExpression="Name"> 
     <ItemTemplate> 
     <%# Eval("Name") %> 
     </ItemTemplate> 
     <EditItemTemplate> 
     <asp:TextBox ID="Name" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox> 
     </EditItemTemplate>     
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Path" HeaderStyle-HorizontalAlign="Left" SortExpression="Path"> 
     <ItemTemplate> 
     <%# Eval("Path") %> 
     </ItemTemplate> 
     <EditItemTemplate>      
     <asp:TextBox ID="Path" runat="server" Text='<%# Bind("Path") %>'></asp:TextBox> 
     </EditItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Route Value" HeaderStyle-HorizontalAlign="Left" SortExpression="RouteValue"> 
     <ItemTemplate> 
     <%# Eval("RouteValue") %> 
     </ItemTemplate> 
     <EditItemTemplate> 
     <asp:TextBox ID="RouteValue" runat="server" Text='<%# Bind("RouteValue") %>'></asp:TextBox> 
     </EditItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="RegExp" HeaderStyle-HorizontalAlign="Left" SortExpression="RegExp"> 
     <ItemTemplate> 
     <%# Eval("RegExp") %> 
     </ItemTemplate> 
     <EditItemTemplate> 
     <asp:TextBox ID="RegExp" runat="server" Text='<%# Bind("RegExp") %>'></asp:TextBox> 
     </EditItemTemplate> 
    </asp:TemplateField> 
    </Columns>     
</asp:GridView> 
+0

邮政标记,所以我们可以证明/确定哪些内容页脚了。 – adatapost 2012-01-07 13:12:17

+0

为什么你想在你的整理事件中做到这一点?当然你想要在创建/绑定事件中完成它? – Brissles 2012-01-07 15:45:13

回答

1

这将改变第一FooterRow单元格的文本:

protected void gv_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    gv.FooterRow.Cells[0].Text = "Hello"; 
} 

当然,你需要确保你的GridViewShowFooter属性为true。

或者,通过铸造发送者和添加控制:GridView控件的

protected void Sorting(object sender, GridViewSortEventArgs e) 
{ 
    Label label = new Label(); 
    label.Text = gv_s.Rows.Count.ToString() + " records"; 
    ((GridView)sender).FooterRow.Cells[0].Controls.Add(label); 
} 
+0

这就是我的例子已经得到了什么。它不起作用 – ONYX 2012-01-08 03:37:42

+0

它在我的工作。我假设你已经尝试启动排序事件来查看结果? – Brissles 2012-01-08 04:44:14

+0

由于某种原因,我的页脚不会将文本添加到任何单元格中任何想法 – ONYX 2012-01-08 05:14:57