关于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#