|
|
|
|
|
|||||
|
|||||
| 樓主 馬克褚
|
我有一個需求,使用GridView時,每筆紀錄顯示成兩行,第一行是顯示多筆欄位,第二行是顯示此筆資料的備註欄位,不知可否達成?
本篇文章發表於2006-07-31 14:05
|
||||
| VP、EP、QP、HP該如何使用? | 免費申請藍色部落 |
| 1樓 |
1.
相對應部分的先改成 ItemTemplate 除了原本的 Label 顯示欄位之外 另外加入 Label 來顯示你要的資料備註 2. 手動建立 DataTable, 依據您的顯示需求 遞迴加入顯示多筆欄位, 或顯示此筆資料的備註欄位
本篇文章回覆於2006-07-31 14:12
|
||||
| 2樓
作者回應
馬克褚
|
我懂你第一點的意思!
但加入的資料備註,要顯示在所有欄位的第二行,而不是某欄位的第二行.... 如果手動建立DataTable,原先GridView的好處,如分頁、排序..等功能,似乎都享受不到了...
本篇文章回覆於2006-07-31 16:01
|
||||
| 3樓 |
1.
您可能要在排版上要多下一點功夫, 比如每一列每個欄位都塞一個沒有框線的 Table, 設定高度或寬度, 裡面每一列又靠上靠左對齊. 如果遇到沒有相對應的欄位, 就用空白顯示. 2. 還是可以啦, 只是要自己多寫一些 code 來處理. 比起他原來自動產生的, 是會有一些不方便沒錯. 3. 不然您也可以動態產生 Table, 這樣做其實彈性也很大, 不再受限於 GridView 的某些限制後, 您也可以依據自己的需求產生希望的顯示方式.
本篇文章回覆於2006-07-31 16:28
|
||||
| 4樓 |
我想您要的,或許是
http://share.webapp.com.tw/temp/dotnet/gridview2Row.jpg 下方的樣子(地址在第二列)
本篇文章回覆於2006-07-31 16:30
=========================================網站 : http://www.allenkuo.com/ |
||||
| 5樓
作者回應
馬克褚
|
正如圖片所示,不知Allen大人有何解法!
本篇文章回覆於2006-07-31 17:06
|
||||
| 6樓 |
我在 #4 的方法是別人在 asp.net 1.x 時教我的 DataGrid 技巧,由於他當時認為是"秘技",所以我現在也不方便跟你講如何做,不過我想有個方法也可行,而且理論上是比較好的解決方法才對,做法如下:
以 #4 的圖為例,圖片中,上半部是 GridView 的原始狀況,若您寫 也就是說 GridView 跟 DataGrid 差不多,它其實是將資料先轉換成一個 Table web control,而 table 的第一列,就是標題,第6列 Rows[5],就是編號5那一筆, 如果你寫table.Rows.Count,會看到此值是8,也就是說這個Table web control 一共有8列,那麼,就表示第一列是標題,最後二列是別的東西, 中間的就是資料了 接下來,就要發揮你的創造力了, 你可以在 GridView1_PreRender 事件裡,先取得 table 物件(就是我上方寫的 code)後,再根據上述的理論,在資料的列裡插入你要的 TableRow, TableCell, 那麼它就可以長成 #4 中下方的外觀了(css要自己先弄一下,但不難) 我不想實際去寫了,但此法用在一筆 record 以多列呈現應該沒問題才對, 您試試看,若寫好了也請將 code 貼上來嘉惠他人,謝謝 由於我是前天才開始 K asp.net 2.0 的書, 這個 GridView 控制項有沒有更簡便的方法做到您的要求我並不確定,只是用1.x 的觀念來解決而已, 您不妨再等等,或許其他人有更好的解決方法
本篇文章回覆於2006-07-31 18:01
=========================================網站 : http://www.allenkuo.com/ |
||||
| 7樓
作者回應
馬克褚
|
我就#6的方法來試試看好了...
本篇文章回覆於2006-08-01 09:06
|
||||
| 8樓 |
它應該99%可行才對,只是我有點懶得寫了
讓我們分工合作,我負責出點子,您去寫寫看,有問題再來討論,若寫出來,記得貼上來哦,謝謝
本篇文章回覆於2006-08-01 09:27
=========================================網站 : http://www.allenkuo.com/ |
||||
| 9樓
作者回應
馬克褚
|
成功了!多謝你的指導,看來GridView的擴充性很不錯的...
結果: http://www.markchoo.com.tw/download/gridview2rows.gif 上下兩個Gridview是用來做比較的...
本篇文章回覆於2006-08-01 10:09
|
||||
| 10樓 |
不錯哦,請您先不要關閉討論串,或許有別的比較好的解決方法也說不定
本篇文章回覆於2006-08-01 13:07
=========================================網站 : http://www.allenkuo.com/ |
||||
| 11樓
作者回應
馬克褚
|
今天發現欄位合併的程式,有些未考慮周詳,附上更新後的程式。(多考慮了pager的位置問題)
程式結果
本篇文章回覆於2006-08-03 15:09
|
||||
| 12樓 |
還好還沒關 :)
由於pager可以在上下顯示,只是單純算index 或許較容易凸槌,您也可以試試另一個方法 例如在每列放入一個literal or hidden control,並將datasource先取得(例如用datatable) 再在PreRender中去找找hidden control中保留的PK值,然後再到DataTable中去找到"自我介紹"欄位值,最後再決定要不要塞入一列 那麼應該就比較不會凸槌了,有時你或許要做群組小計加總,就可以用這類技巧 另外,您在第9行寫 If Me.GridView1.PagerSettings 好像怪怪地,您應該有注意到引數中有 ByVal sender As Object 而這sender多半是觸發控制項的元兇, 因此,您可以試著改成 Dim ctrl as GridView = CType(sender, GridView) If ctrl.PagerSettings.... '<--如此一來,您的程式就不必在乎GridView的ID是什麼了,比較不會有無謂的bug
本篇文章回覆於2006-08-03 15:24
=========================================網站 : http://www.allenkuo.com/ |
||||
| 13樓
作者回應
馬克褚
|
感謝Alen大人指導,第二段更改是沒問題,但第一段就有些看不懂了!
本篇文章回覆於2006-08-04 10:17
|
||||
| 14樓 |
沒關係,看不懂就算了,反正問題暫時有解決了
本篇文章回覆於2006-08-04 10:31
=========================================網站 : http://www.allenkuo.com/ |
||||
| 15樓 |
還好沒關,我找到較合理的方法了,請參考
http://www.codeproject.com/useritems/TariqMultiHeaderGridview.asp 我剛才試了一下 雖然程式碼較粗糙,但也已可正確變成二列,剩下的,就由您自行發揮了
本篇文章回覆於2006-08-04 20:49
=========================================網站 : http://www.allenkuo.com/ |
| 回覆 |
| 如要回應,請先登入. |
|
![]() |
| 網站導覽| 網站介紹 | 會員權益 | 點數說明 | 加值服務 | 大事紀 | 廣告刊登 |常見問題 | 聯絡我們 |
捨得資訊股份有限公司 版權所有 ©copyright 2004 All Rights Reserved 艾堤數位科技股份有限公司 網站維護、經營管理 | Managed by I-Tea Technology |
|
|