牛人莫入 Silverlight 4 DataGrid Before add Number

來源:互聯網
上載者:User

最近在做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);

本人的能力有限,如有不正確的地方歡迎大家指正;一起學習,共同進步。

結束了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.