2010-03-03 178 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