c# - asp.net gridview 奇怪的行为

标签 c# asp.net gridview

在 ASP.NET 中使用 gridview 控件时,我遇到一个奇怪的问题。我在其中使用分页。

网格中的第二列是“订单状态”列,其中包含“D”、“S”等值。“D”和“S”是代表“已交付”和“已发货”的数据库值。我们使用这些表示来节省数据库空间。

现在,在 GridView 中显示它时,我希望它显示为“已显示”或“已发货”,而不是作为数据源一部分的“D”和“S”。第一次加载页面时,我通过获取当前页面的行并在页面加载事件的帮助下将单元格的“D”和“S”更改为“已交付”和“已发货”来处理它。

但是,当我使用 GridView 的分页控件转到下一页时,就会出现问题。

“订单状态”列中的值不会更新为第二页中的“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;
}

我通常不会发布我的所有代码,但我非常渴望找到解决这个问题的方法。我将非常感谢您提供的任何帮助。

提前致谢!

最佳答案

尝试在 RowDataBound 事件中更新它。这允许您对每行的装订进行调整。

这是一个例子: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx

关于c# - asp.net gridview 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9402123/

相关文章:

c# - 可以使用 XmlAttributes 有选择地 XmlIgnore 吗?

javascript - 提交按钮上弹出 Html 确认弹出窗口

c# - 在模拟对数据库的 WCF 调用时遇到问题,显示 domain\Machine$ 登录失败

c# - 如何在 aspx 中运行 if 语句?

安卓 GridView 安卓 :numColumns ="auto_fit" always create only two columns

c# - 如何确定一个类型是否实现了特定的泛型接口(interface)类型

c# - 保存区域性日期 Linq to SQL

c# - 如何修复 .NET 5.0 到 6.0 的迁移错误

c# - 无法访问 Web 控件的 Page_Load 事件中的公共(public)方法

android - 我的 GridView/ListView 仅在 android api 18+ 中触摸后才会呈现