我正在嘗試解決一個問題,我需要計算到期前的天數。
我正在使用 LinqToSql,WPF。
例如,在我的 Sql 中,我有一些日期(每個人一個,(型別 Date)),它代表最后可能的付款日期。

我的問題是,我如何計算每個人的剩余天數,然后,如何將它們系結到我的 DataGrid?

這是我的 XAML 代碼
<DataGrid Margin="58,0,0,160" Name="dgData" HorizontalAlignment="Left" Width="612" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Ime}"></DataGridTextColumn>
<DataGridTextColumn Header="Lastname" Binding="{Binding Prezime}"></DataGridTextColumn>
<DataGridTextColumn Header="Days left"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
這就是我填充我的 DataGrid 的方式
ProbaDataContext proba = new ProbaDataContext();
DateTime today = DateTime.Now;
int nmbDays;
public MainWindow()
{
InitializeComponent();
dgData.ItemsSource = proba.Radniks.ToList();
var sourceList = dgData.ItemsSource as List<Radnik>;
//this is the only thing i menaged to do, count all the days left
foreach(var item in sourceList)
{
DateTime datum = (DateTime)item.Datum;
nmbDays = (datum.Date - today.Date).Days;
txtDatum.Text = nmbDays.ToString();
}
}
uj5u.com熱心網友回復:
您可以使用輔助子類來填充資料網格并在那里進行計算:
private class AuxRadnik:Radnik
{
public int DaysLeft
{
get
{
return (this.Datum - DateTime.Now).Days;
}
}
}
然后更改您的代碼以正確填充 de ItemSource:
public MainWindow()
{
InitializeComponent();
dgData.ItemsSource = proba.Radniks.Select(r=> new AuxRadnik
{Ime = r.Ime,
Prezime = r.Prezime,
Datum = r.Datum
}).ToList();
}
最后在 XAML 部分系結
<DataGrid Margin="58,0,0,160" Name="dgData" HorizontalAlignment="Left" Width="612" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Ime}"></DataGridTextColumn>
<DataGridTextColumn Header="Lastname" Binding="{Binding Prezime}"></DataGridTextColumn>
<DataGridTextColumn Header="Days left" Binding="{Binding DaysLeft}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
uj5u.com熱心網友回復:
我找到了解決方案。
首先,我必須確保我在 SQL 中的“基準”型別是 DateTime(不是日期),然后我必須在我的資料庫中再創建一個列(我將存盤該天數的地方,我將其創建為 varchar,因為我想讓它為負數),最后我執行了這些代碼行:
dgData.ItemsSource = proba.Radniks.ToList();
var sourceList = dgData.ItemsSource as List<Radnik>;
for(int i=0;i<sourceList.Count;i )
{
sourceList[i].BrojDana = (sourceList[i].Datum - DateTime.Now).Days.ToString();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/436205.html
