[Silverlight] 在 Datagrid 中抓取某一欄位的值..

2010/10/13

上一次用Winform 或是 ASP.net 的DataGird
已經是好幾年前的事情了…
還記得好久好久以前…表格都是要靠自己用Repeater 自己去gen 出來..

之前再用Flex 的時候 對於他們DataGrid 可以 Binding 一個 List 取出時也可以直接轉回成為物件..
感到很溫馨..
現在Silverlight 也是… 可參考  [Silverlight] Datagrid Binding Data 簡單範例


對於把資料抓出來..可以不用像我以前的做法..
要去算Row 跟 Column..
而是透過一個關鍵字 as 就可以了…

首先我們承襲 [Silverlight] Datagrid Binding Data 簡單範例 繼續寫下去…
內容就不贅述…
首先我先制定一個OrderInfo 的 Class

namespace GridSelectItemMemo
{
    public class OrderInfo
    {
            public string OrderNo { get; set; } //訂單編號 
            public string ProductName { get; set; } //產品名稱
            public string UserName { get; set; } //訂購人姓名
            public int Price { get; set; } //價錢

            public OrderInfo(string orderNo, string prodName, string userName, int price)
            {
                OrderNo = orderNo;
                ProductName = prodName;
                UserName = userName;
                Price = price; 

            }
    }
}

這時候我們在畫面上 拉入一個DataGrid 叫做 datagrid1 並且在 LayoutRoot 的Loaded 事件時倒入資料…
private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
          
           OrderPool.Add(new OrderInfo("1","Apple iPhone4","當麻許",23000));
           OrderPool.Add(new OrderInfo("2", "MS WinPhone7", "Downmud", 19999));
           OrderPool.Add(new OrderInfo("3", "Apple iPad 8G", "Dracula", 17000));
           OrderPool.Add(new OrderInfo("4", "Windwos 7 旗艦版", "Lucifer", 9000));
           OrderPool.Add(new OrderInfo("5", "MS Arc滑鼠", "Dracula Hsu", 1800));
           this.dataGrid1.ItemsSource = OrderPool;
 }

所以畫面為:
sshot-40

這時候…
我們要在改變選取的時候 抓到 訂單編號…
只需要在  SelectionChanged 加入事件…



讓他彈出一個MessageBox 顯示你選取得訂單編號..
private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
           DataGrid grid = sender as DataGrid;
           if (grid.SelectedItem != null)
           {
               //可直接轉成為 OrderInfo 物件型態
               MessageBox.Show("你選取的編號是" + (grid.SelectedItem as OrderInfo).OrderNo);
           }
          
 }


很簡單.這做法跟Flex 用Datagrid 去Binding 一個ArrayCollection 而且取出方法是一樣的…
真是佛心啊…

預覽:

讚一下:

下載範例:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.