数据网格视图不使用 LINQ 显示值


这对

用户来说非常简单。

他们从组合框中选择零件类型和制造商,并在文本框中搜索零件代码。单击"搜索",结果将在数据网格视图中返回。

法典:

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。Tbl制造商

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

您可以尝试创建一个匿名类型,仅保存所需的数据。在选择子句中,选择您的数据以及任何关系数据。

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(..)可能不再退回 tbl水龙头类型的物品!相反,我创建了一个新类。这个包含应该显示的所有数据!

最新更新