我在组合框数据源方面遇到麻烦

时间:2016-05-12 13:13:43

标签: c#

我有1个具有数据源(数据库)的组合框,我使用LINQ。 这在我的代码中:

private void Return_Load(object sender, EventArgs e)
{
        button1.Enabled = false;
        var buka = (from db in Program.data.Transactions where db.ReturnDate == null select db);
        comboBox1.DataSource = buka;
        comboBox1.SelectedIndex = -1;


    } // my form load

这是我的组合框选择索引:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {


            var open = (from db in Program.data.Transactions where db.TransactionID == comboBox1.Text select db).FirstOrDefault();

            label10.Text = open.StaffID;
            label11.Text = open.ClientName;
            label12.Text = open.CarID;
            label13.Text = open.StartDate.ToString();
            label14.Text = open.EndDate.ToString();
            label15.Text = DateTime.Now.ToString("dd MM yyyy");

            var car = (from db in Program.data.MsCars where db.CarID == label12.Text select db).FirstOrDefault();
            int rentduration;
            int lateduration;
            double extrachange;
            double totalprice;
            string a = car.Price.ToString();
            rentduration = open.EndDate.Value.DayOfYear - open.StartDate.Value.DayOfYear;
            lateduration = DateTime.Now.DayOfYear - open.EndDate.Value.DayOfYear;

            totalprice = rentduration * double.Parse(a);

            label17.Text = totalprice.ToString();
        }

我的问题是如何从数据库中添加combobox数据源?考虑使用组合框架。

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解这个问题,但是如果你的组合框在组合框中为LINQ查询中的每个结果显示Program.data.Transactions(由Return_Load方法假设) ,您需要查看DisplayMember属性以查找要向用户显示的值(显示)和ValueMember以查找您希望使用的值,例如TransactionID

您还可能需要调用ToList()函数来枚举记录 -

var buka = (from db in Program.data.Transactions where db.ReturnDate == null select db).ToList();

一旦您获得了ValueMember设置,您就会将combobox1.Text替换为combobox1.SelectedValue(相应地转换为相关数据类型)

将combobox1的DisplayMember和ValueMember设置为' TransactionID' (以便显示和使用相同的值),然后在您的SelectedIndexChanged处理程序中,您可以使用:

var open = (from db in Program.data.Transactions where db.TransactionID == (object_type)comboBox1.SelectedValue select db).FirstOrDefault();

...确保用实际类型替换object_type,无论是字符串,整数等等。

......和......

var car = (from db in Program.data.MsCars where db.CarID == open.CarID select db).FirstOrDefault();

请务必测试NullReferenceExceptions并处理如果记录不能正常存在会发生什么。