显示行长度的Datagrid视图

时间:2012-03-30 17:32:54

标签: datagrid

我正在学习ADO.NET实体框架。这是我的第一个例子。数据网格似乎占用了客户的长度,而不是我想要显示的实际列。以下是代码。

public partial class NewCustomerForm : Form
{
    AFApp_H1Entities entities = new AFApp_H1Entities();
    public NewCustomerForm()
    {
        InitializeComponent();
    }

    private void NewCustomerForm_Load(object sender, EventArgs e)
    {
        var query = from c in entities.Customers
                        where c.ZIP == "77080"
                        select c.CustomerName;

        this.Controls.Add(dataGridView1);
        dataGridView1.DataSource = query;
    }
}

我假设我在控制台应用程序中运行相同的查询时会得到一些数据,但在网格中它给出了客户名称的长度。 ?

1 个答案:

答案 0 :(得分:0)

此代码将为您提供查询返回的每一行的条目,即query.length(),如果您需要根据此代码过滤结果所需的不同内容。

修改

好的,所以这让我很烦,所以我写了一个小测试用例,我猜你正在尝试使用实体框架(如果没有请回帖),你确实说ADO但你的变量命名确实表明这可能不是只是普通的旧ADO。

所以这是我的数据库表创建脚本。

USE [Customers]
GO

/****** Object:  Table [dbo].[Customer]    Script Date: 04/02/2012 11:16:02 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Customer](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [Zip] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

现在在我的申请中有这个

public partial class Form1 : Form
{
    private readonly CustomersEntities _entities =
        new CustomersEntities(ConfigurationManager.ConnectionStrings["CustomersEntities"].ConnectionString);

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var query =
            _entities.Customers.Where(c => c.Zip == "12345").Select(
                c => new CustomerDataBinding {Name = c.Name, Zip = c.Zip});

        Controls.Add(dataGridView1);
        dataGridView1.DataSource = query;
    }
}

public class CustomerDataBinding
{
    public string Zip { get; set; }
    public string Name { get; set; }
}

我在该数据库中有三个记录,两个具有相同的ZIP(无论它不是真正的zip格式),还有一个没有(用sql插入自己的数据)。

如果我运行此代码,我会让两个客户返回网格而不是预期的三个客户。

请注意,这不是实现此目的的最佳方式,但仅适用于基本示例。

顺便说一下,应用程序在运行

时看起来this