C # и объекты каркаса сущности - PullRequest
1 голос
/ 04 января 2012

попробуйте сделать мою первую программу на c #, с vs2010 и структурой сущностей. Это код:

public partial class Form1 : Form
{
    ValinorEntities ve = new ValinorEntities();

    public Form1()
    {
        InitializeComponent();

        comboBox1.DataSource = ve.item_groups;
        comboBox1.DisplayMember = "item_group_name";
        comboBox1.ValueMember = "item_group_id";

        var departmentQuery = from d in ve.items
                              from g in ve.item_groups
                              where d.item_group_id_fk == g.item_group_id
                              select new { d.item_name, g.item_group_name, d.item_id, d.item_number };

        dataGridView1.DataSource = departmentQuery;
        dataGridView1.Columns[2].Visible = false;
        dataGridView1.Columns[3].Visible = false;
    }

    private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
        textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
        textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();

        comboBox1.DataSource = ve.item_groups;
        comboBox1.DisplayMember = "item_group_name";
        comboBox1.ValueMember = "item_group_id";
    }

    private void btn_New_Click(object sender, EventArgs e)
    {
        try
        {
            item item = new Valinor.item();

            item.item_name = textBox1.Text;
            item.item_number = textBox2.Text;
            item.item_group_id_fk = (int)comboBox1.SelectedValue;
            ve.AddToitems(item);
            ve.SaveChanges();

            MessageBox.Show("Insert successful");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Insert failed" + ex);
        }
    }

    private void btn_Save_Click(object sender, EventArgs e)
    {
        try
        {
            var id = Convert.ToInt32(textBox3.Text);
            item c = ve.items.FirstOrDefault(i => i.item_id == id);

            c.item_name = textBox1.Text;
            c.item_number = textBox2.Text;
            c.item_group_id_fk = (int)comboBox1.SelectedValue;                
            ve.SaveChanges();

            MessageBox.Show("Save successful");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Save failed" + ex);
        }
    }
}

Это работает, но у меня есть несколько проблем.

  • Что я должен написать comboBox1.SelectedValue, чтобы правильный элемент был выбран после нажатия на ячейку?
  • В функции btnSave_Click значение textbox3 относится к идентификатору, что не очень элегантное решение. Как я могу возразить, чтобы заменить его?

  • Если мне известны такие ссылки, такие как:

    textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString(); textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();

можно было бы как-то избежать. Для этого, однако, zakell, что dataGridView1_CellMouseClick fügvénynél ссылается не на значение ячейки, а также объекта. Это можно решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...