Как загрузить asp.net код представления сетки вместе с представлением сетки при загрузке страницы?

#c# #asp.net

#c# #asp.net

Вопрос:

У меня есть представление сетки со столбцами Boundfield, и я пытаюсь заменить текст заголовка Boundfield в коде после загрузки страницы. Согласно бизнесу, HeaderText должен измениться, но в моем случае текст меняется не сразу.

 <asp:GridView ID="sampleGrid" runat="server" OnRowDataBound="sampleGrid_RowDataBound" OnSorting="sampleGrid_Sorting">
    <Columns>
        <asp:BoundField HtmlEncode="False" HeaderText="Name" DataField="Name"  SortExpression="Name" />
    </Columns>
</asp:GridView>
  

Код, лежащий в основе:

 protected void sampleGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row != null)
    {
        sampleGrid.Columns[0].HeaderText = "text";
    }
}
  

Я добавил основную логику своего кода. Пожалуйста, дайте мне знать, если есть какое-либо решение моей проблемы.

Заранее спасибо за помощь!!

Ответ №1:

Вы можете установить значение строки заголовка на уровне ячейки в событии RowDataBound.

 protected void sampleGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        e.Row.Cells[0].Text = "text";
    }
}
  

Обновить

 if (e.Row.RowType == DataControlRowType.Header)
{
    LinkButton lb = e.Row.Cells[0].Controls[0] as LinkButton;
    lb.Text = "text";
}
  

Комментарии:

1. Спасибо за ответ, который я добавил, как вы упомянули на уровне ячеек, но строки просто потеряли функциональность щелчка. Ранее у меня была функция Click для моей строки, где я мог сортировать по Asc и desc

2. Извините за неудобства!! Я обновил код и добавил выражение сортировки.

3. да, вы правы. Но я говорю, что не могу щелкнуть строку после добавления текста на уровне ячейки, и в моем случае я сортирую столбцы после щелчка.

4. Сортируемый заголовок — это кнопка ссылки. Так что просто найдите это и измените его текст. Смотрите обновление.

Ответ №2:

Вы можете попробовать следующее

 protected void sampleGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        LinkButton headerText = e.Row.Cells[0].Controls[0] as LinkButton; 
        headerText.Text = "Michel";
    }
}
  

Комментарии:

1. Спасибо за ответ