2012-01-07 2 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

Сообщение Разметка GridView таким образом мы можем оправдать/определить, какое содержание колонтитула имеет. – adatapost

+0

Почему вы хотите сделать это во время вашего сортировочного мероприятия? Неужели вы хотите сделать это в созданном/связанном событии? – Brissles

ответ

1

Это изменит текст первой FooterRow ячейки:

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

Конечно, вы должны убедиться, что ShowFooter свойства ваших GridView «S истинно.

Или же, литье отправителя и добавление элемента управления:

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

+0

Он работает на моем конце. Я предполагаю, что вы попытались запустить событие Сортировка, чтобы увидеть результаты? – Brissles

+0

По какой-то причине мой нижний колонтитул не добавит текст в любую из моих ячеек какие-либо идеи. – ONYX

Смежные вопросы