当前位置:编程学习 > C#/ASP.NET >>

关于Combobox绑定数据清空问题

各位好,
我在combobox中绑定了数据,我想打开winform的时候这个是combobox是空的,所以我用comboBox1.SelectValue=-1;可以实现,但是有个问题就是,比如当save的时候如果combobox为空就会跳出 Object reference not set to an instance of an object......如何能把这里改成显示XX不能为空? thanks.............

--------------------编程问答-------------------- 加个判断应该就可以了啊。。

贴代码来看看 
--------------------编程问答-------------------- 绑定后设置combobox.Text="";这样就不会报那个错了 --------------------编程问答-------------------- 为空了 --------------------编程问答-------------------- 2楼的试过了,不行,我试过了,
private void BindArea()
        {
            this.cboxCArea.DataSource = _Area.GetAllAreas();           
            this.cboxCArea.DisplayMember = "Name";
            this.cboxCArea.ValueMember = "ID";      
        }
这是绑定,winform调用class的,

private void frmCliManagement_Load(object sender, EventArgs e)
        {
            this.BindArea();
            cboxCArea.SelectedValue = -1;
        }
然后save button 
 private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                clsClient prClient = new clsClient();//class client

                prClient.AreaID = cboxCArea.SelectedValue.ToString();

                if (cboxCArea.Text == "")
                    {
                        MessageBox.Show("Not allow empty!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        lcClient.InsertClient(prClient);
                        MessageBox.Show("Add Succeed!", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
}
      catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
} --------------------编程问答-------------------- 或者能告诉我,怎样让这个绑定的combobox一开始就显示please select? 但是不能把please select 插进database.....哈
        public List<clsArea> GetAllAreas()
        {
            DataSet lcDS = bDbconnection.RunProcReturn("select * from Area", "Area");
            List<clsArea> lcClient = new List<clsArea>();
            foreach (DataRow lcDataRow in lcDS.Tables[0].Rows)
            {
                clsArea lcArea = new clsArea();
                lcArea.ID = lcDataRow["AreaID"].ToString();
                lcArea.Name = lcDataRow["AreaName"].ToString();
                lcArea.Type = lcDataRow["AreaType"].ToString();
                lcClient.Add(lcArea);
            }
            return lcClient;
        }

这些是在类里面定义的。。。然后在winform里面调用
其实这个我的毕业设计。。。其他功能都基本上实现了,现在只是想着怎样设计界面人性化。。。 --------------------编程问答-------------------- 直接ComboBox.Text = "please select",数据绑定,但不设置SelectedIndex不可以? --------------------编程问答-------------------- 我不是很明白6楼的意思...是在BindArea 还是 formload..我两个都试了,都是不成功,如果我不设置
comboBox1.SelectValue=-1; 就会自动显示表的第一行. --------------------编程问答-------------------- 自己在调用 cboxCArea.SelectedValue时要检查它是不是空不就完了。 --------------------编程问答--------------------
 string sql = "select Parametersid,Parametersname from TG_SystemParameters union select Parametersid=-1,TG_SystemParameters='--请选择--'";
                this.TGcbxcompanytype.DataSource = runcmd.gettable(sql);
                this.TGcbxcompanytype.ValueMember = "Parametersid";
                this.TGcbxcompanytype.DisplayMember = "Parametersname";
                this.TGcbxcompanytype.SelectedIndex = 0;

楼主给你点提示! --------------------编程问答-------------------- DisplayMember,ValueMember组合使用 --------------------编程问答-------------------- er....尝试了。。
this.combobox.SelectedIndex = 0;
Error:
InvalidArgument=Value of '0' is not valid for 'SelectedIndex'.
Parameter name: SelectedIndex

改成 this.combobox.SelectedValue = 0;

string sql = "select Parametersid,Parametersname from TG_SystemParameters union select Parametersid= '-1',TG_SystemParameters='--请选择--'";

这样就可以了
太谢谢yangduglas了。。。。
--------------------编程问答-------------------- er....一个小问题,,如果判断是"--请选择--",弹出警告:请选择Area..... --------------------编程问答-------------------- ,,,,,,,,,,,,,
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,