2012-04-17 63 views
0

我創建了一個字典一樣的GridView與字典

Dictionary<Department,bool> dict= new Dictionary<Department,bool>(); 

這裏廳是一類,我有Id,Name and Code的部門。並在bool上午發送該人是否爲HOD或不。

上午將記錄到這個字典一樣

dict.Add(department,chkHOD.checked); 

這裏的記錄被成功添加到字典,並在此之後我綁定的字典到GridView像

gridDept.Datasource=dict; 
gridDept.Databind(); 

現在插入的記錄在gridview中顯示得很好。在此之後,我將這些記錄存儲在數據庫的「StaffDepartments」表中。我在「Staffdepartments」表

1.StaffId(PK - has link with the Staff table) 
2.DepartmentId(PK - has link with the Department table) 
3.IsHOD. 

這裏的記錄被存儲在罰款的database.No問題將記錄到數據庫中3列。

我有一些問題在這裏

* 1.How可以檢查中的DepartmentID是否在字典已經存在增加了它。 2.當編輯員工詳細信息時,我怎樣才能從字典中刪除選定部門,方法是選中Gridview行中的複選框(這裏記錄來自數據庫,所以當我點擊刪除按鈕時,記錄應該被刪除數據庫以及) *

如果一個列表,而不是字典,我可以

int departmentId = (int)gridDept.DataKeys[row.RowIndex].Values["DepartmentId"]; 

得到DepartmentID的,但在字典我不知道該怎麼辦與鍵​​和值對同... 。有人能幫我一下嗎。

+0

這是ASP.NET?我已經添加了標籤,我希望它沒有錯。 – Slauma 2012-04-17 13:54:46

+0

當然它的ASP.NET ...謝謝你加入 – shanish 2012-04-17 13:56:11

回答

1

在添加到字典之前,如何檢查DepartmentId是否已經存在於 字典中。

可以使用:

if (!dict.Keys.Any(d => d.DepartmentId == department.DepartmentId)) 
    dict.Add(department,chkHOD.checked); 

但什麼是錯在這裏。如果你的真正關鍵是DepartmentId而不是Department(對象標識),你應該把它作爲字典中的關鍵。例如,你可以定義一個輔助類:

public class DepartmentBindingHelper 
{ 
    public int DepartmentId { get; set; } 
    public Department Department { get; set; } 
    public bool Checked { get; set; } 
} 

一則這樣定義的字典:

var dict = new Dictionary<int, DepartmentBindingHelper>(); 

而且這種方式添加的對象字典:

if (!dict.ContainsKey(department.DepartmentId)) 
    dict.Add(department.DepartmentId, new DepartmentBindingHelper 
    { 
     DepartmentId = department.DepartmentId, 
     Department = department, 
     Checked = chkHOD.checked 
    }); 

然後您只能將值集合綁定到網格上:

gridDept.Datasource = dict.Values;// it's an IEnumerable<DepartmentBindingHelper> 
gridDept.Databind(); 

而且你的代碼來檢索連續DepartmentId將工作沒有變化:

int departmentId = (int)gridDept.DataKeys[row.RowIndex].Values["DepartmentId"]; 
+0

謝謝Slauma,我會檢查並讓你知道 – shanish 2012-04-17 13:57:24

+0

@Shanish:在第一個代碼片段中有一個錯誤,我需要添加一個'!'=「Not 」。我已更正了代碼。 – Slauma 2012-04-17 14:03:22

+0

是我理解,並在我的編碼... – shanish 2012-04-17 14:07:47