1

这对用户来说非常简单。

他们从组合框中选择零件类型、制造商,然后在文本框中搜索零件代码。单击搜索,结果会在 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>();
    }

“搞砸”的是结果:

  • 身份证:正确
  • Mfr:是其表中的 ID,而不是名称
  • 代码:正确
  • 说明:正确
  • 价格:正确
  • 日期:正确
  • 制造商:我什至不知道为什么在这里,它的结果是“PXDB.TblManufacturers
4

1 回答 1

1

首先,PXDB.TblManufacturers似乎是从tblFaucets 到 tblManufactureres的关系。 似乎是您的水龙头表中指向制造商的foreignKey值。Mfr

您可以尝试创建一个仅包含您想要的数据的匿名类型。在您的 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类型的项目!相反,我创建了一个新类。这个包含所有应该显示的数据!

于 2012-09-29T19:28:17.313 回答