2012-04-17 104 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