求解决,急!

我想我是醉了 2010-12-28 05:34:03
DataGrid模板里有一条或N条数据,现在的问题是要计算出模板里面开始时间、结束时间控件上的值,例如有这样几条时间的数据,开始时间是:xx年xx月xx日xx小时,结束时间是:xx年xx月xx日xx小时,在计算的时候必须是这样计算,如果DataGrid里面有三条这样的数据,分别的日期时间都不同,我要将第二条的开始时间减去第一条的开始时间(的到的就是第一条的出行时间数),第三条 也就是最后一条数据的时候就拿它的结束时间减去第二条的开始时间(的到的就是第二条的出行时间数),计算出来的时间数都有一个TextBox用来显示,如果有N条数据的中间的计算方式就是按照第一条的时间方式去计算。
求高手帮忙解决!谢谢。
...全文
76 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcmfys 2010-12-28
  • 打赏
  • 举报
回复
你为什么不先算出来 在用dataview 绑定呢???
wuyq11 2010-12-28
  • 打赏
  • 举报
回复
需求很清晰了。后一条数据减去前一条数据
F11单步,现在什么问题
hya0114145 2010-12-28
  • 打赏
  • 举报
回复
看前面20字就不想看啦
我想我是醉了 2010-12-28
  • 打赏
  • 举报
回复
求高手解决!小弟不胜感激
pan512 2010-12-28
  • 打赏
  • 举报
回复
for( i=0;i<n-1 ;i++ )
a(i+1)-a(i)

我想我是醉了 2010-12-28
  • 打赏
  • 举报
回复
我想要的结果就是,在多条数据的情况下 拿第二条数据的开始时间减去第一条数据的开始时间(第二条数据的开始时间其实就是第一条数据的结束时间),的到的就是这一个时间段的天数,存在多条数据的情况就是以此类推,到计算到最后一条数据的时候就不同了,是拿最后一条数据的结束时间减去倒数第二条数据的开始时间,的到的结果就是倒数第二条数据这个时间段的天数。用于显示计算结果的TextBox始终有一个Text是空的,也就是最后一个Text
moonwrite 2010-12-28
  • 打赏
  • 举报
回复
Google: Gridview 72 般绝技
可能会给你灵感
chengfellow 2010-12-28
  • 打赏
  • 举报
回复
计算逻辑是什么
回头是岸 2010-12-28
  • 打赏
  • 举报
回复
wolftop 2010-12-28
  • 打赏
  • 举报
回复
啥呢。。。
一克代码 2010-12-28
  • 打赏
  • 举报
回复
你写的太长,又下班了,没心情看!

明天看看!

建议以后问问题,问重点!
  • 打赏
  • 举报
回复
你这 代码!!!真长!!!!!!!!!!!!!!!!
我想我是醉了 2010-12-28
  • 打赏
  • 举报
回复
目前我是这样做的,但算的有问题
public void TimeCalculation()
{
#region 存在数据的处理

if (List1 == null)
{
return;
}

if (List1.Count() == 1)
{
foreach (实体 obj in DataGrid.ItemsSource)
{

if (obj == null)
{
return;
}

TextBox myDaysTime = DataGrid.Columns[4].GetCellContent(obj).FindName("txtTOTALDAYS") as TextBox;

if (myDaysTime == null)
{
return;
}

//如果出发时间与到达时间相等,视为当天往返,时间算一天
if (List1[0].STARTDATE == List1[0].ENDDATE && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;//出行天数
int TotalHours = 0;//出行小时
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[0].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[0].ENDDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration();

TotalDays = ts.Days;
TotalHours = ts.Hours;

int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32();

if (TotalHours >= customhalfday)//如果时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
}
#endregion

#region 存在两条数据的处理
if (List1.Count() == 2)
{
foreach (实体 obje in DataGrid.ItemsSource)
{

if (obje == null)
{
return;
}


if (List1 == null)
{
return;
}

TextBox myDaysTime = DaGrs.Columns[4].GetCellContent(obje).FindName("txtTOTALDAYS") as TextBox;

if (myDaysTime == null)
{
return;
}

//如果出发时间与到达时间相等,视为当天往返,时间算一天
if (List1[0].STARTDATE.Date == List1[1].ENDDATE.Date && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;
int TotalHours = 0;
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[0].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[1].ENDDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration();

TotalDays = ts.Days;
TotalHours = ts.Hours;

int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32();

if (TotalHours >= customhalfday)//如果出行时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
}
#endregion

#region 存在多条的处理
if (List1.Count() > 2)
{
foreach (实体 objs in DataGrid.ItemsSource)
{
if (objs == null)
{
return;
}

if (List1 == null)
{
return;
}

TextBox myDaysTime = DaGrs.Columns[4].GetCellContent(objs).FindName("txtTOTALDAYS") as TextBox;

if (myDaysTime == null)
{
return;
}

for (int i = 0; i < List1.Count(); i++)
{
//如果是最后一条记录
if (i == List1.Count() - 1)
{
//如果出发时间与到达时间相等,视为当天往返,出行时间算一天
if (List1[i].STARTDATE.Date == List1[i - 1].ENDDATE.Date && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;//天数
int TotalHours = 0;//小时
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[i].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[i - 1].ENDDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration();

TotalDays = ts.Days;
TotalHours = ts.Hours;

int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32();

if (TotalHours >= customhalfday)//如果出行时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
else
{
if (i > 0)
{
//如果出发时间与到达时间相等,视为当天往返,出行时间算一天
if (List1[i].STARTDATE.Date == List1[i - 1].ENDDATE.Date && 方案设置实体.ANDFROMTHATDAY == "1")
{
myDaysTime.Text = "1天";
}
else
{
double TotalDays = 0;//天数
int TotalHours = 0;//小时
TimeSpan tsStart = new TimeSpan(Convert.ToDateTime(List1[i].STARTDATE).Ticks);
TimeSpan tsEnd = new TimeSpan(Convert.ToDateTime(List1[i - 1].STARTDATE).Ticks);
TimeSpan ts = tsEnd.Subtract(tsStart).Duration();

TotalDays = ts.Days;
TotalHours = ts.Hours;

int customhalfday = 方案设置实体.CUSTOMHALFDAY.ToInt32();

if (TotalHours >= customhalfday)//如果出差时间大于等于方案设置的时间,按方案标准时间计算
{
TotalDays += 1;
}
else
{
if (TotalHours > 0)
TotalDays += 0.5;
}
myDaysTime.Text = TotalDays.ToString() + "天";
}
}
}
}
}
}
#endregion
}
子夜__ 2010-12-28
  • 打赏
  • 举报
回复

看晕了。。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧