qq_32320747
2018-02-11 02:12
采纳率: 100%
浏览 2.9k

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

  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控件上面有值?我觉得就是这个的问题

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • qq_33478558 2018-02-11 02:22

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

    点赞 打赏 评论
  • dt没有初始化罗,没见你的dt在哪里获取的。。

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

                         cbodept.DisplayMember ="listname";
                        cbodept.ValueMember ="deptid";
    
    点赞 打赏 评论
  • 再写三行 2018-02-11 02:25

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

    点赞 打赏 评论
  • qq_32320747 2018-02-11 02:45

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

    点赞 打赏 评论
  • 再写三行 2018-02-11 05:20

    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也是空

    点赞 打赏 评论
  • qq_32320747 2018-02-11 05:36

    图片说明

    点赞 打赏 评论
  • 再写三行 2018-02-11 05:50

    俩种可能
    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)暂时没想到

    点赞 打赏 评论

相关推荐 更多相似问题