2013-08-29 5 views
0

DataGrid에서 wpf의 선택된 항목에서 행의 특정 열을 가져 오려고합니다.WPF : 선택한 행의 열 이름 가져 오기

DataGrid의 이름은 Datagrid_Newsale입니다.

전체 행이 선택되면 경고가 표시되므로 해당 열을 매핑 해 보았습니다.

그럼 그것의 행

{ ID = 3, CustomerName = xyz, SaleDate = 05.08.2013 00:00:00, TotalAmount = 10 } 

IS-열 CustomerName=xyz이 텍스트 박스에 보여 질 경우 말한다.

얻기 내가

public void viewcustomername() { List<CustomerDetailes> ilist = null; ilist = (from order in db.Customer select new CustomerDetailes { CustomerName= order.CustomerName }).ToList(); txtCustumer.Text = ilist.ToString(); } 
테이블 -

고객으로부터 데이터베이스에서 모델 -

public class CustomerDetailes 
{ 
    public string CustomerName { get; set; } 
} 

그리고 값의 새로운 인스턴스를 생성 시도 텍스트 상자에 CUSTOMERNAME을 얻기 위해

var copyitem = Datagrid_NewSale.SelectedItem; 

if (copyitem == null) 
{ 
    MessageBox.Show("Please select values from list"); 
} 
if (copyitem != null) 
{      
    MessageBox.Show(copyitem.ToString()); 
} 

로우 -

그래서 한 번 더 시도해보십시오.

CustomerDetailes copyitem = (CustomerDetailes)Datagrid_NewSale.SelectedItem; 

if (copyitem == null) 
{ 
    MessageBox.Show("Please select values from list"); 
} 
if (copyitem != null) 
{      
    MessageBox.Show(copyitem.ToString()); 
} 

txtCustomer.text=copyitem.CustomerName; //CustomerName into a textbox 

그러나 copyitem에서 null을 참조하고 있습니다.

어떻게 전체 행에서 특정 열을 가져올 수 있습니까?

+0

@nit, 질문에 설명 된대로 전체 행을 가져옵니다. – Manoj

+0

@nit, No .., 'CustomerDetails' 모델을 사용하지 않고 처음 시도하십시오. 전체 행을 표시하고 있습니다. 하지만 모델을 사용하면 null이됩니다. – Manoj

+0

죄송합니다. 이해하지 못했습니다. DataGrid의 itemsSource를 CustomerDetails 컬렉션에 설정 했습니까? – Nitin

답변

0

나는이 쉬운 해결책을 생각해 냈습니다.

copyitem의 맵핑 된 데이터 유형은 제 경우에는 익명입니다. 이 경우 Dynamic 데이터 유형을 사용하여 내 문제를 해결했습니다.

내 데이터가 동적으로 발생했기 때문에 특정 열을 매핑하려고 했으므로 데이터가 없기 때문에 정적으로 처리하는 것이 실제로 불가능했습니다.CUSTOMERNAME을 위해 또한 속성 인

int localId = copyitem.ID; 

액세스 동적 Datatype-

dynamic copyitem = dataGrid1.SelectedItem; 

를 사용

는 TotalAmount 내가 같은했다.

Linq는 쿼리는 다른 데이터 그리드에 데이터를 반환

var query= (from order in db.Customer 
where order.ID=localId 
select order).ToList(); 

DataGrid_OpenSale.ItemsSource=query // 변경 사항 -.

0

SelectedItem에서 CustomDetails를 가져 오려면 DataGrid의 ItemsSource을 CustomerDetails 컬렉션에 바인딩해야합니다. 다만

List<CustomerDetails> customerDetails = new List<CustomerDetails>(); 
    List<CustomerDetails> MyCollection 
    { 
     get 
     { 

      return myList; 
     } 
     set 
     { 
      myList = value; 
      PropertyChanged(this, new PropertyChangedEventArgs("MyCollection")); 
     } 
    } 

추천하고 XAML에서 뒤에 (MVVM을 사용하는 경우) 또는 코드에

당신의 ViewModel에서 속성을 만듭니다.

<DataGrid ItemsSource="{Binding MyCollection}"/> 

또는 직접 데이터 그리드의 항목을 작성하는 경우 다음 제공해야합니다 다음 선택 이벤트에서 그리드를 액세스 할 수있는 경우

dataGrid.Items.Add(new CustomerDetails(){Name = "abc"}, xyz propertis) 

감사

+0

더 많은 정보가 될 수 있습니까? – Manoj

0

처럼 CustomerDetails의 인스턴스를 추가하려면 열 ((DataGrid)sender).CurrentCell.Column.Header

그리고 objec 속성에 대한 열 이름 매핑에 일부 사용 표시하고 싶습니다.

관련 문제