2010-03-03 125 views
0

我試圖根據他們相應的鍵檢索列。幫助LINQ查詢

「從鑽石選擇*其中的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); 

     } 
    } 

編輯:

我有兩個相關的列項和鑽石。我有一個datagridview控件顯示來自Items表的數據。我添加了一個LinkView類型的列,所以當用戶點擊ViewDiamond時,會彈出一個新表單並顯示與該Item相關的Diamond。我查看了MSDN DataGridView控件示例,並且他們使用上面的代碼實現了該示例。我對代碼進行了一些調整以適合我的應用程序。上面的代碼有什麼問題?因爲它似乎無法根據其相關的p_Id顯示數據。或者我認爲p_Id有問題,無論其值如何,貨幣經理似乎只檢索與p_Id = 1相對應的數據。

我希望這可以澄清問題。

回答

0

沒關係,我做到了與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呢?

+0

var result = from MyDbContext.diamond其中d.p_Id == p_Id select d; – 2010-03-03 11:05:57

+0

是的,我也這麼認爲,但無法將其綁定到我的datagridview。我試圖將它綁定到一個列表,然後從dgv讀取列表,但是不能。你知不知道怎麼?。 – DanSogaard 2010-03-03 16:07:44

+0

好的,這裏是: var qry = from myDatabaseDataSet.Diamond其中d.p_Id == p_Id select d; bs.DataSource = qry.AsDataView(); – DanSogaard 2010-03-03 18:40:01