下面是我的数据库操作代码,参数是从界面中传过来的,把查出来的结果绑定到datagridview中
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace DataLibNew
{
    public class MaterialDealRecordService
    {
        static SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString);
        /// <summary>
        /// 根据物资名称查询
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public static T_MaterialDealRecord SelectMaterialDealRecord(int RepertoryID)
        {
            T_MaterialDealRecord MDR = new T_MaterialDealRecord();
            string cmdText = "select * from T_MaterialDealRecord where RepertoryID=@RepertoryID";
            try
            {
                conn.Open();
                SqlParameter[] sqlParams = new SqlParameter[] { new SqlParameter("@RepertoryID", RepertoryID) };
                SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, cmdText, sqlParams);                if (reader.Read())
                {
                    MDR.ID= (int)reader["ID"];
                    MDR.EvaluationID = (int)reader["EvaluationID"];
                    MDR.RepertoryID = (int)reader["RepertoryID"];
                    MDR.MaterialID = (int)reader["MaterialID"];
                    MDR.OutCount = (int)reader["OutCount"];
                    MDR.BackCount = (int)reader["BackCount"];
                    MDR.OutTime = (DateTime)reader["OutTime"];
                    MDR.BackTime = (DateTime)reader["BackTime"];
                    MDR.LossCount = (int)reader["LossCount"];
                    MDR.LossToMoney = (int)reader["LossToMoney"];
                    MDR.Receiver = reader["Receiver"].ToString();
                    MDR.DealType = (int)reader["DealType"];
                    MDR.Re = reader["Re"].ToString();
                    MDR.Flag = (int)reader["Flag"];
                    MDR.Reserve1 = reader["Reserve1"].ToString();
                    MDR.Reserve2 = reader["Reserve2"].ToString();
                    MDR.IntReserve = (int)reader["IntReserve"];
                    MDR.TimeReserve = (DateTime)reader["TimeReserve"];
                    MDR.Creater = (int)reader["Creater"];
                    MDR.Createtime = (DateTime)reader["Createtime"];
                    MDR.Modifier = (int)reader["Modifier"];
                    MDR.ModifyTime = (DateTime)reader["ModifyTime"];                }
            }
            finally
            {
                conn.Close();
            }            return MDR;
        } 
    }
}

解决方案 »

  1.   

    把T_MaterialDealRecord 放到集合中去
    Datagridview的datasource只能绑定Ilist
      

  2.   

    还可以省事点用适配器直接返回结果集在放入到datagridview中去,更简单
      

  3.   

    SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, cmdText, sqlParams);
    ---------------------------------------------
    第一种思路:
    查询出数据读取器之后
    DataTable table = new DataTable();
    table.load(reader);
    .....this.datagridview.datasource = table;第二种思路:
    使用List<T_MaterialDealRecord>
    查询的结果添加到集合中去最后依次循环list集合 为datagridview的单元格赋值。