2012-09-29 2 views
1

사용자에게 매우 간단합니다.DataGridView에서 LINQ를 사용하여 값을 표시하지 않음

ComboBox에서 부품 유형, 제조업체를 선택하고 텍스트 상자에서 부품 코드를 검색합니다. 검색을 클릭하면 DataGridView에서 결과가 반환됩니다.

코드 :

var mType = CmbType.SelectedItem.ToString(); 
var mManufacturer = CmbMfr.SelectedValue.ToString(); 
var mCode = Convert.ToString(TxtProductCode.Text); 

switch (mType) 
{ 
    case "Faucets": 
     var faucets = Resources.Accessor.SearchFaucets(mManufacturer, mCode); 
     DgInventory.DataSource = faucets; 
     break; 
    case "Parts": 
     var parts = Resources.Accessor.SearchParts(mManufacturer, mCode); 
     DgInventory.DataSource = parts; 
     break; 
} 

소품 코드 :

무엇 "엉망으로하는"결과입니다
public static List<TblFaucets> SearchFaucets(string mId, string mCode) 
{ 
    var dataConnect = new PxLinqSqlDataContext(); 

    return (from f in dataConnect.GetTable<TblFaucets>() 
      where (f.Mfr == Convert.ToInt32(mId)) 
      where (f.Code == mCode) 
      select f).ToList<TblFaucets>(); 
    } 

:

  • ID : 올바른
  • 제조업체 :의 ID입니다 그 테이블이 아닌 이름
  • 코드 : 올바른
  • 설명 : 올바른
  • 가격 : 올바른
  • 날짜 : 올바른
  • 제조사 :이 여기에서도 이유를 모르겠다는, 그 결과는 "PXDB.TblManufacturers
+0

DataGridview 코드를 표시 할 수 있습니까? – Thousand

+0

datagridview 코드는 기본적으로 입니다. DgInventory.MultiSelect = false; DgInventory.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 그렇지 않으면 그 예쁜. – Kaleet

답변

1
입니다

우선, PXDB.TblManufacturers관계에서 tblFaucets to tblManufactureres 인 것으로 보입니다. Mfr은 (는) foreignKey 값을 수도꼭지 테이블에 표시하여 제조업체를 참조합니다.

익명 유형을 원하는 데이터 만 보유하고있는 을 만들 수 있습니다. select 절에서 데이터를 선택하고 관계형 데이터를 선택하십시오.

public static List<DisplayFaucet> SearchFaucets(string mId, string mCode) 
{ 
    var dataConnect = new PxLinqSqlDataContext(); 

    return (from f in dataConnect.GetTable<TblFaucets>() 
     where (f.Mfr == Convert.ToInt32(mId)) 
     where (f.Code == mCode) 
     select new DisplayFaucet() {        // create anonymous object 
        ID = f.ID,      // only holding the data you want to 
        Manufacturer = Manufacturer.Name, // assuming there is property Name within your manufacturer table?! 
        Code = f.Code, 
        Description = f.Description, 
        Price = f.Price, 
        Date = f.Date 
       }).ToList(); 
} 

다른 클래스를 추가 데이터가 SearchFaucets(..)가 더 이상 유형 tblFaucet의 항목을 반환하지 않을 수 있음을

public class DisplayFaucet 
{ 
    public int ID { get; set; } 
    public string Manufacturer { get; set; } 
    public string Code { get; set; } // check type 
    public string Description { get; set; } 
    public doublePrice{ get; set; } // check type 
    public DaetTime Date { get; set; } // check type 
} 

참고 표시 잡아! 대신 새로운 수업을 만들었습니다. 이것은 표시되어야하는 모든 데이터를 포함합니다!

+0

예, 두 테이블 간의 관계가 맞습니다. 다시 말해, 변수 mId 및 mCode를 사용하여 SearchFaucets() 메서드를 호출하기 때문에 항목을 반환해야한다고 생각합니다. 그것 없이는, 나는 신뢰할 수있는 검색을하는 방법을 모르겠다? – Kaleet

+0

그래서 내 코드가 도움이 되었습니까? –

+0

컴파일러에서 메서드에 반환 형식이 있어야한다고 불평합니다. 나는 이전의 msg를 편집했다. – Kaleet

관련 문제