在c#中填充数据网格的最佳方法

时间:2013-12-14 10:25:03

标签: c# sql winforms datagrid devexpress

我想在ms sql server中对几个表进行SELECT, (只有选择,没有更新,插入或删除), 并从结果中生成(groupable devexpress)数据网格。

是哪种方法 b)或最快(关于响应时间)
c)或代码最少的那个?

使用
- 自动创建的数据集
- 从选择中手动创建的数据集 (如Direct method from SQL command text to DataSet
- Linq to SQL
- 或其他方法?

您更喜欢哪种方式?

我期待着你的回答。

祝你好运

2 个答案:

答案 0 :(得分:1)

使用少量代码的一种非常简单的方法是加载数据 数据表然后绑定数据为数据源到datagridview 。请注意,此示例不处理任何 sql注入问题。

将数据加载到数据表:

  public static DataTable SelectData(string sCommand)
  {
          DataTable dtData = null;
          try
          {
            dtData = new DataTable();
            using (SqlConnection connection = new SqlConnection("your connection string goes here"))
            {
              using (SqlDataAdapter da = new SqlDataAdapter(sCommand, connection))
              {
                connection.Open();
                da.Fill(dtData);
              }
            }                    
          }
          catch (Exception e)
          {
            MessageBox.Show(e.Message);
          }         
          return dtData;
   }

将表绑定到datagridview:

DataTable dtData = SelectData("SELECT * FROM mytable");
dataGridView1.DataSource = dtData;

答案 1 :(得分:0)

如同Koryu所描述的那样,紧凑的方式将是DataTable。我认为,创建一个包含属性的类选择为属性会更加美观。

例如:

SELECT cId, name, email from customer

为此您将构建一个类:

public class Customer{

    public Customer(int id, string name, string email){
    this.Id = id;
    this.Name = name;
    this.Email = email;
    }

    public int Id {get; private set;}
    public string Name {get; private set;}
    public string Email{get; private set;}

    public static IEnumerable<Customer> ReadCustomer(){

           //Here you read the data from database and add each row to you List of Customer.
    }
}

因此,您可以将客户列表定义为网格的数据源。

myGrid.DataSource = Customer.ReadCustomer();

如果您使用BindingList作为DataSource,您可以直接使用NewItemRow,它允许最终用户直接从Customer创建对象到DataSource。

我认为这是处理的好方法。