2012-10-29 26 views
0

我有一個集合在我的C#代碼如何編輯/更新數據的收集在C#

private ObservableCollection<UserForms> _userForms = 
    new ObservableCollection<UserForms>(); 

public ObservableCollection<UserForms> UserForms { get { return _userForms; } } 

我在Form_Load()事件

填充收集有4個值

foreach (DataRow dr in DataTable.Rows) 
{ 
        UserForms.Add(new UserForms() 
        { 
         FormID = Convert.ToInt32(dr["FormID"]), 
         FormName = dr["FormName"].ToString(), 
         FromSyName = dr["FormSyName"].ToString(), 
         Visibility = false, 
         RoleAdd=false, 
         RoleEdit=false, 
         RoleDelete=false 
        }); 
} 

我填補這一

現在我想更新

Visibility = true, 
RoleAdd=true, 
RoleEdit=true, 
RoleDelete=true 

在集合中的指定行中。

+1

什麼樣的更新? –

+0

我已更新我的問題 –

+0

_userForms.Add(new UserForms());我不認爲你正在尋找如此明顯的答案。你需要解釋更多。 –

回答

1

你只需要做到以下幾點:

UserForms[0].Visibility = true; 

其中 「[0]」 是索引。

+0

謝謝你我會試試這個... –

0

如果您ObservableCollection是枚舉(該集合通常是),你可以使用foreach循環如下:

foreach(UserForms uf in UserForms) 
{ 
    if (uf.FormID > 10) 
     uf.Visibility = true; 
} 

在上面的代碼,我改變行的可見性,他們的FormID高於10。

+0

我想要可見性= true;在收集的一些行中 –

+0

那麼你可以在'foreach'塊中添加一個'if'語句並執行你的測試。 –

+0

我改變了答案以符合你的新標準。 –

0

看起來你需要過濾掉一些項目然後更新它們。

foreach(UserForms uf in UserForms.Where(i=>i.FormName == "FormName"/*put your filtering criteria here*/)) 
{ 
    uf.Visibility = true; 
    // Set all needed properties here 
} 
0

您想要訪問集合的實例。

_userForms.ToList().ForEach((f) => f.Visibility = true); 

或者如果您知道索引並想更新單個項目。

_userForms[index].Visibility = true; 

或多個過濾項

var filterColl = coll.Where((c)=> c.FormName.StartsWith("A")); 
filterColl.ToList().ForEach((f) => f.Visibility = true); 

希望這有助於..

+0

謝謝你.. 請告訴我如何獲取WPF dataGrid的RowIndex,同時檢查Datagrid列的CheckBox –

+0

這與相同的問題無關。請提出差異問題。 –