DataGrid - 현재 선택된 행 가져오기
.NET프로그래밍/Silverlight 3.0 2009. 12. 11. 09:55 |앞에서 실습했던 "DataGrid 컨트롤로 데이터 출력하기"에다 "현재 선택된 행 가져오기"기능을 추가하기 위하여, "RiaDataGrid"파일을 복사해서 쓰지 않고 다시 열어서 실습하였다.
[MainPage.xaml]
<UserControl
xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="RiaDataGrid.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel>
<my:DataGrid x:Name="ctlMemoList" AutoGenerateColumns="True"></my:DataGrid>
<my:DataGrid x:Name="ctlMemoList2" AutoGenerateColumns="False">
<my:DataGrid.Columns>
<my:DataGridTextColumn Header="번호" Binding="{Binding Num}"></my:DataGridTextColumn>
<my:DataGridTemplateColumn Header="이름">
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Foreground="Blue" />
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
</my:DataGrid.Columns>
</my:DataGrid>
<Button x:Name="btnGet" Content="현재 선택된 행 가져오기" />
</StackPanel>
</Grid>
</UserControl>
[MainPage.xaml.cs]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
namespace RiaDataGrid
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
btnGet.Click += new RoutedEventHandler(btnGet_Click);
ctlMemoList2.SelectionChanged += new SelectionChangedEventHandler(ctlMemoList2_SelectionChanged);
}
// 행을 선택하자마자 선택된 행을 보여주기
void ctlMemoList2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
btnGet_Click(null, null);
}
// 현재 선택된 행을 가져오려면???
void btnGet_Click(object sender, RoutedEventArgs e)
{
if (ctlMemoList2.SelectedIndex != -1) // 선택되었다면...
{
// SelectedItem으로 현재 선택된 행을 가져와서 Memo 타입으로 변경 후 대입
Memo m = ctlMemoList2.SelectedItem as Memo;
MessageBox.Show(String.Format("번호 : {0}, 이름 : {1}", m.Num, m.Name));
}
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
FuncList();
FuncObservable();
}
private void FuncObservable()
{
ObservableCollection<Memo> lst = new ObservableCollection<Memo>();
lst.Add(new Memo() { Num = 1, Name = "홍길동" });
lst.Add(new Memo() { Num = 2, Name = "백두산" });
lst.Add(new Memo() { Num = 3, Name = "한라산" });
this.ctlMemoList2.ItemsSource = lst;
}
private void FuncList()
{
List<Memo> lst = new List<Memo>();
lst.Add(new Memo() { Num = 1, Name = "홍길동" });
lst.Add(new Memo() { Num = 2, Name = "백두산" });
lst.Add(new Memo() { Num = 3, Name = "한라산" });
this.ctlMemoList.ItemsSource = lst;
}
}
public class Memo
{
public int Num { get; set; }
public string Name { get; set; }
}
}
'.NET프로그래밍 > Silverlight 3.0' 카테고리의 다른 글
Silverlight에 WebService연동 (0) | 2009.12.11 |
---|---|
DataPager 컨트롤 - 초간단 DataGrid 페이징 처리 (0) | 2009.12.11 |
DataGrid 컨트롤로 데이터 출력 (0) | 2009.12.11 |
컨트롤(요소) 바인딩 - 컨트롤과 컨트롤간의 바인딩 (0) | 2009.12.11 |
DataTemplate로 리스트박스 꾸미기 (0) | 2009.12.11 |