일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- eventargs
- 버스 API
- MVC
- 공공 데이터 포털
- C# MDB Handle
- WPF
- 경기도 버스정보시스템
- 디자인 패턴
- DrawEllipse
- C# MDB
- 시
- c#
- 객체지향
- Excel Cell Format
- Cell Border Style
- JSON
- eventhandler
- Json.NET
- MDB Connect
- 경기도 버스
- GDI+
- sqlite3
- delegate
- DrawRectangle
- solid
- MDB Select
- Winform
- NUnit
- TDD
- C# 파일 암/복호화
- Today
- Total
White Whale Studio
[WPF] DataGrid 의 Combobox 컬럼 사용과 선택한 Cell 정보 읽기 본문
[WPF] DataGrid 의 Combobox 컬럼 사용과 선택한 Cell 정보 읽기
glorymind 2013. 9. 24. 11:52C#을 주로 만질때에도 많이 사용했던 것이 DataGridView 인데요.
WPF에서는 DataGrid로 표기되어 사용됩니다.
데이터베이스로부터 정보를 가져와서 읽고 수정하고 삭제하는 작업을 하는데 주로 사용하는데
Datagrid에 뿌려진 정보를 수정할때 좀더 세련되고 간편한 방식으로 정보를 갱신하고자 할 때
사용하면 좋을 것 같습니다.
사실 DataGrid의 컬럼(열)에 콤보박스나 체크박스 이미지 등등 여러가지를 표현하는 방법이 있는데
이번에는 Combobox에 대해서 포스팅을 하려고 합니다.
항상 저는 웹사이트 참고 후 다시 제가 스스로 찾아볼때 알아보기 쉬우라고 포스팅을 하는 목적이라..
각설하구요..
우선 XAML 쪽입니다.
소스에서 다음과 같이 참조추가를 해주셔야됩니다. 저는 my라는 이름으로 툴킷을 추가했습니다.
xmlns:my ="툴킷주소"
xmlns:staticData="clr-namespace:프로젝트명"
toolkit 같은 경우는 참조에서 따로 추가를 해주셔야됩니다.
참조 - 참조추가 - .Net - WPF ToolKit을 찾아서 추가해주시면됩니다.
그리고
<Window.Resources>
<staticData:StatusList x:Key="StatusList"/>
</Window.Resources>
를 추가해줍니다.
여기서 StatusList 는 class로 추가해주셔야합니다. 이 리스트는 콤보박스에 들어갈 아이템들을 정의합니다.
public class StatusList : List<string>
{
public StatusList()
{
this.Add("0");
this.Add("1");
this.Add("2");
this.Add("3");
this.Add("4");
}
}
위와같이 정의를 해주시면 되고
다음으로는 데이터그리드를 정의해야할 차례입니다. 참고한 소스를 찬찬히 살펴보죠.
<my:DataGrid x:Name="dgData" AutoGenerateColumns="False">
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="{Binding Subject}" Header="Subject" Width="*"/>
<my:DataGridTemplateColumn Header="Status" Width="100">
<my:DataGridTemplateColumn.CellTemplate> <!-- 단순 출력되는 부분입니다. 한번 더 클릭하면 콤보박스가 나타납니다.-->
<DataTemplate>
<TextBlock Text="{Binding Status}"/> <!--바인딩같은 경우는 컬럼을 의미합니다. DB에서 가져오는 경우 <TextBlock Text="{Binding Path=컬럼명}" 과 같이 되겠지요. -->
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
<my:DataGridTemplateColumn.CellEditingTemplate> <!--핵심인 콤보박스 부분입니다. 이 곳에서 미리 정의한 StatusList를 불러와서 바인딩시킵니다.-->
<DataTemplate>
<ComboBox Height="22"
ItemsSource="{StaticResource StatusList}"
SelectedItem="{Binding Status}"/>
</DataTemplate>
</my:DataGridTemplateColumn.CellEditingTemplate>
</my:DataGridTemplateColumn>
<my:DataGridTextColumn Binding="{Binding RaisedBy}" Header="Raised By" Width="100"/>
</my:DataGrid.Columns>
</my:DataGrid>
이렇게 하시면 콤보박스가 추가된 그리드뷰를 확인하실수 있습니다.
아, 그리고 한가지 더
DataGrid에서 선택한 셀의 정보를 읽는 방법입니다.
아주 간단한 방법인데... 조금 헤매다 찾았습니다.
우선 DataGrid를 더블클릭해서
private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
와 같이 자동생성을 하시구요.
함수내에
DataRowView myRow = (DataRowView)dataGrid.CurrentCell.Item; // 선택된 행 정보를 불러옵니다.
label2.Content = myRow.Row.ItemArray[5].ToString(); // 해당 행 정보에서 [i]번째 컬럼에 해당하는 셀의 정보를 불러옵니다. 필요에 따라 수정해주시면되겠죠.
와 같이 내용을 넣어주시면 됩니다.
혹시나 DataRowView의 갱신이 필요할때는 null을 넣어주시고
Nullexception을 한번 체크하여 코딩하시면 될것같네요.
이와 같이 설정하신뒤 데이터베이스를 읽고 수정하는 것이 가능합니다.
'IT Engineering > .Net (WPF)' 카테고리의 다른 글
[WPF/C#] 첨부, 컨텐츠 데이터 파일의 호출 및 사용 (0) | 2013.10.02 |
---|---|
[WPF] 애니메이션 / Animation (0) | 2013.09.27 |
[WPF] XAML에서 자주 사용하는 것들 (0) | 2013.08.29 |
[WPF] MSSQL Stored Procedure Connection / WPF - 프로시저와의 연결 (0) | 2013.08.06 |
[WPF] XML 작성 및 자동 줄바꿈 옵션 적용하기. & XML-Linq 사용 (0) | 2013.07.25 |