0
ビジュアルスタジオの2015マスターページのWebプロジェクトにgridviewがあります。私はDatatableを介してコードビハインドでgridviewを実装しています。また、Datatableには4つの列があり、1つの列にはそのフィールドのデータに応じてステータス(RED、ORANGEおよびGREENの色を表示)があります。グリッドビューの列をセルの色で並べ替える方法は?
私は、30秒ごとにグリッドビューを更新するためにタイマーを設定しました(コードの背後にある - データロード機能)。私は列がステータス=赤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();
これはほぼすべてのコードです。私は不要なコードを削除して上からデータ行を移入しました。
によってカントは、任意の複数の列を追加するintデータ型
で列StatusWeightを追加します。それを行う他の方法はありますか?この列を非表示にして、ソートを使用する方法がいくつかできると思いますか? – Jag
はい、StatusWeightを非表示の列にしてもそれを並べ替えることができます。バインドする前にクエリまたはデータテーブルで並べ替えてください。 https://msdn.microsoft.com/en-us/library/bb383893(v=vs.90).aspx http://stackoverflow.com/questions/9107916/sorting-rows-in-a-data-table – Muckeypuck
両方のリンクがdatagridviewのために動作していません。彼らは時代遅れです。 – Jag