Помощь с запросом LINQ - PullRequest
       18

Помощь с запросом LINQ

0 голосов
/ 03 марта 2010

Я пытаюсь получить столбцы на основе их соответствующего ключа.

"Выбрать * из ромба, где p_Id =" + p_Id

Я следовал примеру MSDN, и они делали это так:

        CurrencyManager cm = ((CurrencyManager)this.BindingContext[myDatabaseDataSet, "Items.ItemDiamond"]);
        IBindingList list = (IBindingList)cm.List;

, но связанные данные представления списка возвращают только данные p_Id = 1. Что не так?

Полный код:

    private void Viewdiamonds(int p_Id)
    {
        this.Cursor = Cursors.WaitCursor;


        frmDiamond frmd = new frmDiamond();

        CurrencyManager cm = ((CurrencyManager)this.BindingContext[myDatabaseDataSet, "Items.ItemDiamond"]);
        IBindingList list = (IBindingList)cm.List;

        frmd.ShowDialog(p_Id, this, list);

        this.Cursor = Cursors.Default;

    }
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {


        if (e.ColumnIndex == 1 && e.RowIndex != -1 && !dataGridView1.Rows[e.RowIndex].IsNewRow)
        {
            DataGridViewCell cell = this.dataGridView1[e.ColumnIndex - 1, e.RowIndex];
            int p_Id = Convert.ToInt32(cell.Value);
            this.Viewdiamonds(p_Id);

        }
    }

Edit:

У меня есть два связанных столбца, Предметы и Алмаз. У меня есть элемент управления сеткой данных, который отображает данные из таблицы элементов. Я добавил столбец типа LinkView, поэтому, когда пользователь нажимает кнопку ViewDiamond, появляется новая форма и отображаются алмазы, связанные с этим элементом. Я посмотрел на образец элемента управления MSDN DataGridView, и они реализовали это, используя приведенный выше код. Я сделал некоторые изменения в коде, чтобы соответствовать моему приложению. Что не так с кодом выше? Потому что кажется, что он не может отображать данные в соответствии с их относительным p_Id. Или я думаю, что с p_Id что-то не так, независимо от его значения, диспетчер валют, похоже, получает только данные, соответствующие p_Id = 1.

Надеюсь, это прояснило проблему.

1 Ответ

0 голосов
/ 03 марта 2010

Не бери в голову, я сделал это с помощью sql rdr:

        BindingSource bs = new BindingSource();

        string connstring = "Data Source=MyDatabase.sdf;Persist Security Info=False";
        string sqlqry = "SELECT * from diamond where p_Id=" + p_Id;
        SqlCeConnection conn = new SqlCeConnection(connstring);
        SqlCeCommand cmd = new SqlCeCommand(sqlqry, conn);
        conn.Open();

        SqlCeDataReader rdr = cmd.ExecuteReader();
        bs.DataSource = rdr;
        rdr.Close();
        conn.Close();

Каков эквивалент использования linq?

...