2011-03-01 32 views
0

我有一個Windows窗體DataGridView,其中每行有數據和複選框。如何從不同頁面獲取DataGridView中的選定行

我將選擇複選框特定行和所有選定行將在另一個頁面來填充。

if (grdEmp.Rows.Count > 0) 
     { 
      var selectedEmpIDs= from DataGridViewRow coll in grdEmp.Rows 
            where Convert.ToBoolean(coll.Cells["Select"].Value) == true 
            select coll; 
      if (selectedEmpIDs.Count() > 0) 
      { 
       foreach (DataGridViewRow row in selectedEmpIDs) 
       { 
        selectedEmp+= row.Cells["EmpId"].Value + ","; 
       } 
      } 
     } 

這隻適用於一頁。

,當我瀏覽到另一個頁面,並單擊選定行,前一個熄滅。

我該如何解決它。

感謝 cmrhema

注:對不起,我的困惑,當我的意思是它的工作原理很好的一個網頁,我的意思分頁。

我想我需要增加更多的投入,

有GridView中的10頁。

我點擊下一頁(下一頁鍵)選擇從GridView控件,一個又一個的每一頁的第一條記錄。

但是隻有最後選擇的記錄正在顯示,其他記錄被忽略。

可能是什麼prblm

+0

你將不得不保留選定的ID,如在一個隱藏字段,然後通過jQuery – V4Vendetta 2011-03-01 05:11:08

+0

檢查一遍@ V4Vendetta:JQuery的Winforms中?甚至在WebForms中,如果您正在瀏覽頁面我們如何使用JQuery訪問前一頁隱藏的字段? – Anuraj 2011-03-01 05:32:54

+0

@Anuraj:對不起,我的錯誤......我以爲他指的是分頁 – V4Vendetta 2011-03-01 05:50:33

回答

0

您可以使用列表或字典或任何其他類型的集合全球使用的Program.cs或使用靜態類。並在離開頁面之前將選定的行存儲到列表中。

0

您可以改爲使用List,而不是使用以逗號分隔的字符串作爲您的ID列表。

你的代碼就成爲這樣的事情:

if (grdEmp.Rows.Count > 0)   
{    
    var selectedEmpIDs= from DataGridViewRow coll in grdEmp.Rows          
    where Convert.ToBoolean(coll.Cells["Select"].Value) == true          s 
    select coll;    

    if (selectedEmpIDs.Count() > 0)    
    {     
     foreach (DataGridViewRow row in selectedEmpIDs) 
     { 
      if (!listOfIds.Contains((int)row.Cells["EmpId"].Value)) 
      { 
       listOfIds.Add(((int)row.Cells["EmpId"].Value)); 
      } 
     } 
    } 
}   

您需要的方法來從這個名單,所以加入的複選框選中的事件的事件處理程序可能會更好地工作刪除項目。

列表對象本身是簡單的現場爲您containst DataGridView的形式的類級的對象。

這變得有點複雜,如果你在管理跨形式分頁,但保持選定ID列表的相同的原則適用。

相關問題