摘要:[C#][gridview][RowDataBound] 處理紀錄
最近都在 做一堆有關於girdview 的畫面處理動作
這次把有用到的功能都記錄下來
RowDataBound 事件其實就是在生成 gridview 的時候 所做的事情
而這個事情理還包函了
DataControlRowType.Header
跑取表頭的時候
DataControlRowType.DataRow
在跑取資料列的時候
DataControlRowType.Footer:
在跑取表尾的時候
DataControlRowType.Pager
忘了待哺
DataControlRowType.Separator:
忘了帶補
DataControlRowType.EmptyDataRow:
空資料列的時候
最常用到的就是讀取資料列的時候了
有些需求會希望把資料在同一個儲存格顯示時 就必續在這個狀態下塞資料
可以在 RowDataBound 事件時 使用
if (e.Row.RowType == DataControlRowType.DataRow)
去代資料或者
//若需要修改到表頭表尾甚至是分頁的時候 可以用這種方法 去抓取目前的type 在寫方法去做
switch (e.Row.RowType)
{
case DataControlRowType.DataRow:
doSomeFun1();
break;
case DataControlRowType.Footer:
doSomeFun2();
break;
..........
}
那要怎樣把值從這邊帶到畫面上呢!???
首先可以先在gridview 的欄位上面 轉換成樣板 並放入
literal 原件 或者也可以根據你的喜好來排版
接下來就是在 DataRow 的時候 使用FindControl 來找尋girdview 上的這個元件
並把值塞進去 ,這邊可以做一些訊息上的修改
您可以一個一個塞到這元件中 這樣單一儲存格顯示的資料就不會是在像自動產生的資料
會有多種欄位的資料看使用者怎樣去排版跟使用
也可以依據元件來放看個人使用方法
若有一些特別欄位要做運算的時候
也可以在這邊做(個人覺得能在SQL做更好)...但小弟SQL 沒那嗎強...部分的資料可能會在這邊運算
方法像這樣
//判斷方式可以自行再加強
if(DataBinder.Eval(e.Row.DataItem, "CreateDate").ToString().Trim() != "" ){
objLtl = e.Row.FindControl("ltlCreateDate")
objLtl.Text = Convert.ToDateTime(DataBinder.Eval(e.Row.DataItem, "CreateDate")).ToString("yyyy/MM/dd")
}
就可以將日期塞到 設計頁上的ltlCreateDate 的欄位上了
新手發文...若有錯誤請多包涵與指正
謝謝