練習在 DataGridView 內,對資料進行格式化
- Money 欄位資料每三位有ㄧ個小數點
- Money 欄位內不同金額區間設定不同顏色表示
- 點選 Money 欄位內資料,會改變顏色來強化點選的 cell
- 日期欄位內資料指定格式化為 D
- NULL 值必須顯示未輸入日期字樣
- Money 欄位利用 CellFomatting、Date 欄位利用 DefaultCellStyle.Format 來格式化
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 建立基礎資料
DataTable dt = new DataTable("Demo");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Money", typeof(decimal));
dt.Columns.Add("Date", typeof(DateTime));
dt.Rows.Add(1, 2456, DateTime.Now);
dt.Rows.Add(2, 789456123, DateTime.Now.AddDays(1));
dt.Rows.Add(3, 456123, DateTime.Now.AddDays(2));
dt.Rows.Add(4, 1, DateTime.Now.AddDays(3));
dt.Rows.Add(5, 1111, null);
dt.Constraints.Add("PK", dt.Columns["ID"], true);
dgvData.DataSource = dt;
dgvData.AllowUserToAddRows = false;
// 利用 DefaultCellStyle.Format 屬性來 Date 欄位格式化
dgvData.Columns["Date"].DefaultCellStyle.Format = "d";
dgvData.Columns["Date"].DefaultCellStyle.NullValue = "未輸入日期";
}
private void dgvData_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
// 利用 CellFormatting 來完成 Money 欄位格式化
if (dgvData.Columns[e.ColumnIndex].Name.Equals("Money"))
{
decimal money = (decimal)e.Value;
e.CellStyle.Format = "###,###,###";
e.CellStyle.SelectionBackColor = Color.Red;
e.CellStyle.SelectionForeColor = Color.White;
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
if (money > 0 && money <= 1000) e.CellStyle.BackColor = Color.LightBlue;
if (money > 1000 && money <= 10000) e.CellStyle.BackColor = Color.LightGreen;
if (money > 10000) e.CellStyle.BackColor = Color.LightPink;
}
}
}
}
沒有留言:
張貼留言