Я сталкиваюсь со странной проблемой при использовании элемента управления gridview в ASP.NET.Я использую пейджинг в нем.
Второй столбец в сетке - это столбец «Статус заказа», который содержит значения, такие как «D», «S» и т. Д. «D» и «S»Значения базы данных, представляющие «Доставлено» и «Доставлено».Мы используем эти представления для экономии места в базе данных.
Теперь, пока он отображается в GridView, я бы хотел, чтобы он отображался как «Отображаемый» или «Отправленный» вместо «D» и «S ", который входит в состав источника данных.Когда я загружаю страницу в первый раз, я обрабатываю ее, получая строки текущей страницы и меняя «D» и «S» ячеек на «Доставлено» и «Отправлено» с помощью события загрузки страницы.
Но проблема возникает, когда я перехожу на следующую страницу с помощью элементов управления разбиением на страницы вида сетки.
Значения в столбце «Статус заказа» не обновляются до «D "и" S "на второй странице, и, следовательно, моя функция не сможет подобрать их и не сможет преобразовать их в" Доставлено "и" Отправлено ".
Я также пытался выполнить событие OnPageIndexChanged
.Не работает даже с этим: (
Вот код.
УПРАВЛЕНИЕ GRIDVIEW
<asp:GridView ID="OrderGrid" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="OrderHistory" AlternatingRowStyle-CssClass="alt"
CssClass="order_grid" DataKeyNames="order_id" OnPageIndexChanging="OrderGrid_PageIndexChanging">
УСТАНОВИТЬ МЕТОД СТАТУСА ЗАКАЗА
public void SetOrderStatus()
{
string Delivered = "Delivered";
string Shipped = "Shipped";
string Processing = "Processing";
for (int i = 0; i < OrderGrid.Rows.Count; i++)
{
if (OrderGrid.Rows[i].Cells[1].Text == "D")
{
OrderGrid.Rows[i].Cells[1].Text = Delivered;
OrderGrid.Rows[i].Cells[1].BackColor = System.Drawing.Color.FromName("#127b41");
OrderGrid.Rows[i].Cells[1].ForeColor = System.Drawing.Color.FromName("#fdfdfd");
}
if (OrderGrid.Rows[i].Cells[1].Text == "S")
{
OrderGrid.Rows[i].Cells[1].Text = Shipped;
}
if (OrderGrid.Rows[i].Cells[1].Text == "P")
{
OrderGrid.Rows[i].Cells[1].Text = Processing;
}
}
}
СТРАНИЦА ИНДЕКСА, ИЗМЕНЯЮЩАЯ ФУНКЦИЮ
protected void OrderGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
OrderGrid.PageIndex = e.NewPageIndex;
OrderGrid.DataBind();
SetOrderStatus();
string o = OrderGrid.Rows[0].Cells[1].Text;
}
Обычно я не публикую весь свой код, но мне не терпится найти решение этой проблемы.был бы очень признателен за любую помощь, которая приходит.
Заранее спасибо!