2 qq 32320747 qq_32320747 于 2018.02.11 10:12 提问

未将对象引用设置到对象的实例
  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控件上面有值?我觉得就是这个的问题

8个回答

zyy1111111
zyy1111111   2018.03.02 10:55
已采纳

通过dal获取参数值

qq_33478558
qq_33478558   2018.02.11 10:22

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

qq_32320747
qq_32320747 我是C#不是JAVA
3 个月之前 回复
showbo
showbo   Ds   Rxr 2018.02.11 10:25

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

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

                     cbodept.DisplayMember ="listname";
                    cbodept.ValueMember ="deptid";
qq_32320747
qq_32320747 我不太懂,要DataTable dtdept= ?怎么写?
3 个月之前 回复
showbo
showbo 回复qq_32320747: new DataTable只是实例化,并没有clumns。。自己要搞清楚dt初始化
3 个月之前 回复
qq_32320747
qq_32320747 回复C币出货Q155132206: 你说的不对啊,在LOad里面的那个Datatable的声明是dttime的,在全局我有一个 DataTable dt = new DataTable();变量了,
3 个月之前 回复
showbo
showbo 回复qq_32320747: 去掉Load中的DataTable申明,直接初始化全局的dt变量
3 个月之前 回复
qq_32320747
qq_32320747 回复C币出货Q155132206: 因为那个是cbo控件,要展示在上面的列表上
3 个月之前 回复
qq_32320747
qq_32320747 回复C币出货Q155132206: 那应该这么做?
3 个月之前 回复
showbo
showbo 如果dt是全局变量,Load方法中的dt是私有局部变量,那样 FrmRecords_Money_Load中的dt访问不到,不是同一个变量
3 个月之前 回复
baidu_33403616
baidu_33403616   2018.02.11 10:25

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

qq_32320747
qq_32320747 没错啊,我之前说了就是listname为空要怎么解决?其他的我都查过了
3 个月之前 回复
qq_32320747
qq_32320747   2018.02.11 10:45

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

baidu_33403616
baidu_33403616   2018.02.11 13: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
qq_32320747 没有啊,我试了有depttid和listname
3 个月之前 回复
qq_32320747
qq_32320747   2018.02.11 13:36

图片说明

baidu_33403616
baidu_33403616   2018.02.11 13: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)暂时没想到

qq_32320747
qq_32320747 12没有问题,数据库交互出现什么问题?
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!