未将对象引用设置到对象的实例

未将对象引用设置到对象的实例

问题描述:

  public List<DataContract.ClinicInCharge.Records_Moneys> Load(int deptid,string listname)
        {
            string sql, err;
            sql = string.Format(@"select deptid,dept_code + dept_name as listname 
                       from {0} where isuse=1 and duty=1 ", Tables.tbDeptList);
            sql += " order by dept_code";

            DataTable dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);

            SqlHelper.ExecuteSQL(ThisConn.sCono, sql, out err);
            if (err.Length > 0)
            {
                throw new Exception(err);
            }
            return DataConverter.DataTableToIList<DataContract.ClinicInCharge.Records_Moneys>(dt).ToList();

        }


         private void FrmRecords_Money_Load(object sender, EventArgs e)
        {
            try
            {
                string listname = DataConverter.EyeNull(cbodept.SelectedValue);
                entity . deptid = DataConverter.ToInt(cbodept.SelectedValue);
                dal.Load(entity.deptid, listname);
                if (listname !="")
                {
                    if (inputdeptid > 0)//判断是否为财务科?
                    {
                        btnImport.Show();
                        btnsetuser2.Show();
                        btnsetuser.Show();
                        btndelete.Show();
                        btnsave.Show();
                        tabControl1.TabPages.Remove(tabPage3);//使tabControl1不显示
                        tabControl1.TabPages.Remove(tabPage5);
                    }
                    else
                    {
                        btnImport.Hide();
                        btnsetuser2.Hide();
                        btnsetuser.Hide();
                        btndelete.Hide();
                        btnsave.Hide();

                        DataRow r;
                        r = dt.NewRow();
                        r["deptid"] = 0;
                        r["listname"] = "所有";
                        dt.Rows.InsertAt(r, 0);
                    }

                    entity.RecordUser = Share1.user_code + Share1.user_name;
                    DataTable dttime = DataConverter.GetMonthsList(DataConverter.ToDateTime("2018-01-01"), DateTime.Now.Date);
                    cbotime.DataSource = dttime;
                    cbotime.DisplayMember = dttime.Columns["monthsname"].ToString();
                    cbotime.ValueMember = dttime.Columns["months"].ToString();
                    cbotime.SelectedValue = DateTime.Now.AddMonths(-2).ToString("yyyy-MM-01");//两个月之内的记录

                    cbodept.DataSource = dt;
                    cbodept.DisplayMember = dt.Columns["listname"].ToString();//未将对象引用到实例
                    cbodept.ValueMember = dt.Columns["deptid"].ToString();
                    cbodept.SelectedValue = inputdeptid;


                    bselect = true;
                    btnQuery_Click(sender, e);
                }
                }

            catch (Exception ex)
            {
                ThisHQ.Base.Base.SuMsg(ex.Message);
            }

        }

listname为空要怎么解决?

图片说明
怎么让cbodept控件上面有值?我觉得就是这个的问题

你这个代码问题很大啊,首先,字符串拼接最好使用StringBuffer,其次做相等比较要用equals 正确写法应该是if (!"".equals(listname))

dt没有初始化罗,没见你的dt在哪里获取的。。

你直接设置列名称不就行了,干嘛还从columns属性获取一次?。。。

                     cbodept.DisplayMember ="listname";
                    cbodept.ValueMember ="deptid";

1)传进来的参数listname为空或者非正常值
2)sql语句查询有问题
一个个排查吧,这个问题不难

图片说明
主要是应该这两个控件没有值吧,我之前也有这个问题,后来成功了就是因为控件有值,这个要怎么操作?

sql = string.Format(@"select deptid,dept_code + dept_name as listname
from {0} where isuse=1 and duty=1 ", Tables.tbDeptList);
sql += " order by dept_code";
这里是吧dept_code和dept_name查询的结果作为字符创链接设置到listName,显然是查询的结果有问题,你把这段sql语句复制到数据库中执行的话listName也是空

俩种可能
1)code和name数据类型不一致 不过这种可能应该排除
2)字符串连接操作在开发工具中存在问题。
你可以这样
sql = string.Format(@"select deptid,dept_code as listname
from {0} where isuse=1 and duty=1 ", Tables.tbDeptList);
sql += " order by dept_code";
看看listname是否还是为空
3)如果1,2都没有问题 那么就是
DataTable dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);

        SqlHelper.ExecuteSQL(ThisConn.sCono, sql, out err);

也就是说与数据库交互的部分的问题
4)暂时没想到