它对用户来说非常简单。
它们从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>();
}“混乱”的结果是:
发布于 2012-09-29 19:28:17
首先,PXDB.TblManufacturers似乎是从tblFaucets到tblManufactureres的relation。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();
}添加另一个类来保存要显示的数据。
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类型的项!相反,我创建了一个新类。这个包含所有应该显示的数据!
https://stackoverflow.com/questions/12655448
复制相似问题