Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\rizhi.mdb;User Id=;Password=;
// 或 ACE 12.0/16.0 (Office 2010+)
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\rizhi.mdb;Persist Security Info=False;
放入 `web.config`:
using System.Data.OleDb;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) BindGrid();
}
void BindGrid()
{
string connStr = ConfigurationManager.ConnectionStrings["AccessConn"].ConnectionString;
string sql = "SELECT id, rq, n_je, title, content FROM rizhi";
using (OleDbConnection conn = new OleDbConnection(connStr))
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
conn.Open();
using (OleDbDataReader dr = cmd.ExecuteReader())
{
gvDiary.DataSource = dr;
gvDiary.DataBind();
}
}
}
| 屬性 | 用途 |
|---|---|
| AutoGenerateColumns="False" | 關閉自動產生欄位,完全由 ` |
| BoundField.DataFormatString | 格式化顯示:日期 `{0:yyyy-MM-dd}`、數字 `{0:N0}` (千分位) |
| HeaderStyle / ItemStyle | 分別設定表頭、資料列樣式 (背景色、對齊、字體) |
| HyperLinkField | 產生超連結欄位:`DataNavigateUrlFormatString="page.aspx?id={0}"`,`{0}` 為 `DataNavigateUrlFields` 指定欄位值 |
| AllowPaging + PageSize | 啟用分頁,自動產生分頁器 |
protected void gvDiary_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// 金額為負數顯示紅色
decimal amount = Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "n_je"));
if (amount < 0) e.Row.Cells[2].ForeColor = System.Drawing.Color.Red;
// 滑鼠懸停變色 (配合 CSS :hover 更佳)
e.Row.Attributes["onmouseover"] = "this.style.backgroundColor='#FFFFE0';";
e.Row.Attributes["onmouseout"] = "this.style.backgroundColor='';";
}
}
GridView 配合 `BoundField`、`HyperLinkField`、`TemplateField` 可靈活呈現 Access/OLEDB 資料。關鍵在於 `AutoGenerateColumns=False` 手工定義欄位,善用 `DataFormatString`、`HeaderStyle`/`ItemStyle`、`DataNavigateUrlFormatString` 實現專業級表格呈現。