【发布时间】:2016-11-21 16:42:15
【问题描述】:
我的 Visual Studio 2015 母版页 Web 项目中有一个 gridview。我正在通过数据表在代码隐藏中填充网格视图。 Datatable 有 4 列,其中一列是 Status(显示颜色为 RED、ORANGE 和 GREEN),具体取决于该字段的数据。
我设置了每 30 秒刷新一次 gridview 的计时器(代码隐藏 - 数据加载功能)。我希望在 status = RED ASC(顶部的红色)上按颜色对列进行排序。
我正在想办法实现这个想法
我的aspx页面代码如下
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<div> </div>
<asp:Timer ID="ctlTimer" runat="server" Interval="30000" OnTick="OnTimerIntervalElapse">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="lblTimer" runat="server"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" ID="pnlUpdate" EnableViewState="False">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ctlTimer" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" Width="100%" AllowSorting="True"></asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
我的代码隐藏代码。
// create data table
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
// create columns
dt.Columns.Add(new DataColumn("col1", typeof(string)));
dt.Columns.Add(new DataColumn("Status", typeof(string)));
dt.Columns.Add(new DataColumn("col3", typeof(string)));
dt.Columns.Add(new DataColumn("col4", typeof(string)));
// get list of items to display
getListofSystems(1);
// clear datatable
dt.Clear();
}
protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var statusValue = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Status"));
if (statusValue == "Red")
{
e.Row.Cells[1].BackColor = Color.FromName("Red");
}
if (statusValue == "Orange")
{
e.Row.Cells[1].BackColor = Color.FromName("Orange");
}
if (statusValue == "Green")
{
e.Row.Cells[1].BackColor = Color.FromName("Green");
}
}
}
protected void OnTimerIntervalElapse(object sender, EventArgs e)
{
getListofSystems(1);
}
将数据加载为下面的代码/逻辑。
DataRow dr = dt.NewRow();
// display system name
dr["col1"] = ID;
// Get status from database
switch (status)
{
case "red":
dr["Status"] = "Red";
break;
case "orange":
dr["Status"] = "Orange";
break;
case "green":
dr["Status"] = "Green";
break;
}
dr["col3"] = Datetime.Now;
dr["col4"] = contact;
// add row to datatable
dt.Rows.Add(dr);
// bind data to gridview
GridView1.Visible = true;
GridView1.DataSource = dt;
GridView1.DataBind();
这几乎是所有代码。我已经删除了不必要的代码来从上面填充数据行。
【问题讨论】: