C# 基于使用Linq到SQL的双向数据绑定,向datagrid添加新的动态填充列的正确方法是什么
这个问题。我正在为WPF的一家小公司建立一个员工时钟系统,遇到了一个小问题。对于这个问题,我使用了两个表(在Microsoft SQL Server中)employee和AttentionC# 基于使用Linq到SQL的双向数据绑定,向datagrid添加新的动态填充列的正确方法是什么,c#,linq-to-sql,wpfdatagrid,2-way-object-databinding,C#,Linq To Sql,Wpfdatagrid,2 Way Object Databinding,这个问题。我正在为WPF的一家小公司建立一个员工时钟系统,遇到了一个小问题。对于这个问题,我使用了两个表(在Microsoft SQL Server中)employee和Attention Employee: Id RFID First_Name Last_Name ... 1 00056472378 Bob Swagger ... 2 00056464098 Nora
Employee:
Id RFID First_Name Last_Name ...
1 00056472378 Bob Swagger ...
2 00056464098 Nora Blankenship ...
Attendance:
Id EID In_Out Date Time
1 1 IN 2015-01-20 07:00:00
2 2 IN 2015-01-20 07:00:00
3 1 OUT 2015-01-20 11:30:00
Foreign Key is attendance.EID --> employee.Id
我想要的是运行linq to sql语句,例如:
var employees = from e in db.employees select e;
然后从那里检查每个员工的出勤情况,并创建一个名为“总计”的新字段,该字段取出勤日期和时间之间的差值,使总计+=(出勤)
一旦我拥有了整个数据组,我希望使用DataGrid对数据进行数据绑定,以便:
Name Date Time In/Out Total_Time
Swagger, Bob 2015-1-20 07:00:00 IN
Swagger, Bob 2015-1-20 11:30:00 Out 4
Blankenship, Nora 2015-1-20 07:00:00 IN
现在,我使用以下方法进行单向绑定:
var history =
(from att in db.attendances
join emp in db.employees on att.EID equals emp.Id
orderby emp.Last_Name ascending, emp.First_Name ascending, att.Date ascending, att.Time ascending
select new Record
{
Id = att.Id,
EID = (int)att.EID,
Name = emp.Last_Name + ", " + emp.First_Name,
Date = att.DateString,
Time = att.TimeString,
in_out = att.in_out,
Total = ""
}).ToList() as List<Record>;
var历史记录=
(来自att,以db为单位)
在att.EID上加入emp到db.employees等于emp.Id
按皇帝姓氏升序、皇帝姓氏升序、收件人日期升序、收件人时间升序排序
选择新记录
{
Id=附件Id,
EID=(int)att.EID,
名称=emp.Last\u Name+“,”emp.First\u Name,
日期=att.DateString,
时间=附件时间串,
输入输出=附件输入输出,
Total=“”
}).ToList()作为列表;
其中Record是一种新的数据结构,它只包含Total。然后,一旦我在新的结构中有了这个列表,我就会进行所有的计算,以获得每个员工的正确总时间。问题是,当我想使用datagrid进行编辑时,双向绑定不起作用,因为它具有不同的结构,所以我必须手动将它们添加到数据库中
我希望能够将Total添加到实际的历史变量中,但是它变成只读,这是不好的
任何建议都很好
对不起,这么长的帖子。我只是想说得尽可能清楚以避免任何混乱
提前感谢您的帮助。为什么要将日期/时间数据存储为字符串?这大大限制了您在查询本身中进行计算的选项。如何对计算属性进行“双向绑定”?如果修改了
Total
,会发生什么情况?如果datetime是datetime格式,查询会是什么样子。此外,它不是字符串,但我将其存储为DateTime.Date,这样我就可以将日期和时间分开。可以改变,如果它能使它更容易。这就是我被困住的地方,因为总数不是双向的,但所有其他的都需要双向的。我希望能够更改每个记录的日期和时间,然后重新填充数据网格以获得新的总数。记录结构不是实际的考勤结构。我必须创建一个单独的结构来获得一个可写的Total字段。记录结构仅将日期时间保存为字符串,以便正确显示,但主考勤结构使用datetime存储实际日期。