我的组合框出现错误
My code:
SqlConnection conn = new SqlConnection();
try
{
conn = new SqlConnection(@"Data Source=SHARKAWY;Initial Catalog=Booking;Persist Security Info=True;User ID=sa;Password=123456");
string query = "select FleetName, FleetID from fleets";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.CommandText = query;
conn.Open();
SqlDataReader drd = cmd.ExecuteReader();
while (drd.Read())
{
cmbTripName.Items.Add(drd["FleetName"].ToString());
cmbTripName.ValueMember = drd["FleetID"].ToString();
cmbTripName.DisplayMember = drd["FleetName"].ToString();
}
}
catch
{
MessageBox.Show("Error ");
}
数据显示在组合框中,但是当您改变选择值成员,显示成员不会改变。
它现在正在工作,但是当我单击按钮显示数据时
private void button1_Click(object sender, EventArgs e)
{
label1.Text = cmbTripName.DisplayMember;
label2.Text = cmbTripName.ValueMember;
}
显示如下:
舰队名称
FleetID
不显示该值
您将必须完全重写您的代码。显示成员 http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.displaymember.aspx and 超值会员 http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.valuemember.aspx指向列名!此外,你真的应该使用using block
- 所以连接得到disposed (and closed) 查询执行后。
而不是使用数据读取器访问我选择的值数据表并将其作为数据源绑定到组合框上。
using (SqlConnection conn = new SqlConnection(@"Data Source=SHARKAWY;Initial Catalog=Booking;Persist Security Info=True;User ID=sa;Password=123456"))
{
try
{
string query = "select FleetName, FleetID from fleets";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
conn.Open();
DataSet ds = new DataSet();
da.Fill(ds, "Fleet");
cmbTripName.DisplayMember = "FleetName";
cmbTripName.ValueMember = "FleetID";
cmbTripName.DataSource = ds.Tables["Fleet"];
}
catch (Exception ex)
{
// write exception info to log or anything else
MessageBox.Show("Error occured!");
}
}
Using a 数据表可能是一个慢一点 than a 数据读取器 but I 不必创建我自己的类。如果你真的必须/想要利用一个数据读取器你可以选择@Nattrass方法。无论如何你应该写一个使用块 http://msdn.microsoft.com/de-de/library/yh598w02%28v=vs.80%29.aspx!
EDIT
如果您想获取组合框的当前值,请尝试此操作
private void cmbTripName_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbTripName.SelectedItem != null)
{
DataRowView drv = cmbTripName.SelectedItem as DataRowView;
Debug.WriteLine("Item: " + drv.Row["FleetName"].ToString());
Debug.WriteLine("Value: " + drv.Row["FleetID"].ToString());
Debug.WriteLine("Value: " + cmbTripName.SelectedValue.ToString());
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)