2012-09-29 26 views
1

這對用戶來說非常簡單。DataGridView不使用LINQ顯示值

他們從組合框中選擇零件的類型,製造商,然後在文本框中搜索零件代碼。單擊搜索,並在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 tblManufactureresMfr似乎是您的水龍頭表中涉及到製造商的值內的外鍵

您可以嘗試創建一個匿名類型只保存您想要的數據。在你選擇的條款中選擇你的數據 - 以及任何關係數據。

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(); 
} 

添加另一個類來保存你的數據顯示

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 
} 

注意SearchFaucets(..)可能不再返回型tblFaucet的項目!相反,我創建了一個新班級。這個包含了所有應該顯示的數據!

+0

是的,你對兩張表格之間的關係是正確的。讓我澄清一下,我相信我需要它來返回項目,因爲回到表單上我使用變量mId和mCode調用SearchFaucets()方法。沒有它,我不確定如何可靠地進行搜索? – Kaleet

+0

我的代碼也適合你嗎? –

+0

編譯器抱怨該方法必須具有返回類型。我編輯了我以前的信息。 – Kaleet