最近在做MIS管理系統中,對於資料列表展示前面要加上一個序號,全選等功能(本篇文章只解決在DataGrid前加序號問題);從網上也看到有
朋友對這方面的功能做了一些講解,其功能都是一樣,也沒有什麼好說;關鍵在於創新,今天發現還有另外一種方法給可以做,可能這就是一種開發
方面的技巧吧,在此特與大家一起分享。希望對大家在以後的工作中有所協助。
建立工程等一些基本的工作就略過吧。直接看具體是怎麼解決問題的;(本工程是在W7 Theme下做的DEMO)
建立一個Page頁面,並在面頁中添加一個DataGrid Control,如所示:
選擇DataGrid 右鍵編輯當前模板:
這時,我們可以在Object and Tiem 視窗中看到當前DataGrid 模板中所有的控制項對象,如所示:
大家想瞭解DataGrid 構成,可能更詳細的去瞭解它是如何構成的,在這裡就不詳細說明;
接下來,選擇”TopLeftConterHeader”這個模板,並對他的模板進行修改,如所示:
在它的模板中添加一個TextBlock,它的text設定為序號,並能它的Layout做一些設定(根據項目須要做設定);
做到這一步大體上的工作就差不多完了;
接下把Datagrid 中的一個屬性修改一下,就可以了,如所示:
把HeadersVisibility= All就可以了;
現在我們來編寫一個Model給DataGird提供資料顯示:
namespace SLW7Theme.Model{ public class Student { public string Name { get; set; } public int Age { get; set; } public string Address { get; set; } }}
DataGrid 資料繫結:
private void GetStudentList() { var studnet = new List<Model.Student>(); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); studnet.Add(new Model.Student() { Name = "caodaiming", Address = "sicuan", Age = 24 }); dg.ItemsSource = studnet; }
在DataGird 添加LoadingRow事件,在加行時,用行的索引作為序號;
public DataGrid() { InitializeComponent(); GetStudentList(); dg.LoadingRow += new EventHandler<DataGridRowEventArgs>(dg_LoadingRow); } void dg_LoadingRow(object sender, DataGridRowEventArgs e) { e.Row.Header = e.Row.GetIndex() + 1; }
如果在這裡加上了分頁,但是這裡不很對分頁後的資料加累加起來;如果要實現提供給大家一種方法,可以用PageSize,pageIndex來做一些工作,
在這裡不做解決;
寫到最後我發現了一個問題,如果你在整個項目中所有的DataGrid 都是一個模式的,可以修改DataGrid的當前模板;這樣就是對它本身進行了改造,
以後在從工具中拉出它,就是你修改後的控制項;(修改它的拷貝模板也是可以解決這個問題,這樣在項目中有一個DataGrid 的Style);
本人的能力有限,如有不正確的地方歡迎大家指正;一起學習,共同進步。
結束了。