c# - 无法将结果加载到 data.grid
问题描述
我有利息计算器,计算后我想将数据(开始日期、结束日期、原则、日费率、总费率和总额)发送到数据网格。
<DataGrid x:Name="table_interestResultsTable" Height="700" HorizontalAlignment="Left" Margin="12,21,0,0" VerticalAlignment="Top" Width="1000" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Start date" Binding="{Binding interest_SDATE}"/>
<DataGridTextColumn Header="End date" Binding="{Binding interest_EDATE}"/>
<DataGridTextColumn Header="Principle" Binding="{Binding interest_PRINCIPLE}"/>
<DataGridTextColumn Header="ANNUAL RATE" Binding="{Binding interest_ANNUALRATE}"/>
<DataGridTextColumn Header="Daily interest" Binding="{Binding interest_DAILYINTEREST}"/>
<DataGridTextColumn Header="Total interest" Binding="{Binding interest_TOTALINTEREST}"/>
<DataGridTextColumn Header="Total" Binding="{Binding interest_TOTAL}"/>
</DataGrid.Columns>
</DataGrid>
我有代码,一开始在哪里
public Interest()
{
//test at the beginning, is table working
InitializeComponent();
List<User> users = new List<User>();
users.Add(new User() { Id = 1, interest_SDATE = "John Doe", interest_EDATE = new DateTime(1971, 7, 23) });
users.Add(new User() { Id = 2, interest_SDATE = "Jane Doe", interest_EDATE = new DateTime(1974, 1, 17) });
users.Add(new User() { Id = 3, interest_SDATE = "Sammy Doe", interest_EDATE = new DateTime(1991, 9, 2) });
table_interestResultsTable.ItemsSource = users;
}
我正在测试,桌子,它工作正常。然后我有计算,我有错误
private void buttonReportsInterestCalculate_Click(object sender, RoutedEventArgs e)
{
//Checking, are the days set
if (nameReportsInterestDatePickerFrom.SelectedDate == null)
{
MessageBox.Show("Please select start date");
return;
}
if (nameReportsInterestDatePickerTo.SelectedDate == null)
{
MessageBox.Show("Please select end date");
return;
}
if(nameReportsInterestPrinciple == null || nameReportsInterestPrinciple.Text == "")
{
MessageBox.Show("Please enter the value of principle");
return;
}
if (nameReportsInterestAnnualRate == null || nameReportsInterestAnnualRate.Text == "")
{
MessageBox.Show("Please enter the yearly rate");
return;
}
DateTime start_date = DateTime.Parse(nameReportsInterestDatePickerFrom.Text);
DateTime end_date = DateTime.Parse(nameReportsInterestDatePickerTo.Text);
string annualRate_string = nameReportsInterestAnnualRate.Text;
if(annualRate_string.Contains("%"))
{
annualRate_string=annualRate_string.Replace("%", "");
}
decimal annualRate_decimal = decimal.Parse(annualRate_string);
if (annualRate_decimal >= 0.5m)
{
annualRate_decimal /= 100m;
}
decimal principle = decimal.Parse(nameReportsInterestPrinciple.Text, NumberStyles.Any);
//Testing
nameReportsInterestDatePickerFrom.Text = start_date.ToShortDateString();
nameReportsInterestDatePickerTo.Text = end_date.ToShortDateString();
nameReportsInterestAnnualRate.Text = annualRate_decimal.ToString("P");
nameReportsInterestPrinciple.Text = principle.ToString("C");
//Calculate days between start date and end date
TimeSpan elapsed = end_date - start_date;
int days = (int)elapsed.TotalDays;
decimal dailyRate = annualRate_decimal / 365;
dailyRate = Decimal.Round(dailyRate,10);
decimal totalRate = days * dailyRate * principle;
totalRate = Decimal.Round(totalRate,2);
decimal total = totalRate + principle;
nameReportsInterestDailyRate.Text = dailyRate.ToString();
nameReportsInterestTotalRate.Text = totalRate.ToString();
nameReportsInterestTotal.Text = total.ToString();
List<User> users = new List<User>();
users.Add(new User() { Id = 4, interest_SDATE = start_date.ToShortDateString(), interest_EDATE = end_date.ToShortDateString() });
table_interestResultsTable.ItemsSource = users;
}
private void nameReportsInterestPrinciple_TextChanged(object sender, TextChangedEventArgs e)
{
string s = Regex.Replace(((TextBox)sender).Text, @"[^\d,]", "");
((TextBox)sender).Text = s;
}
private void nameReportsInterestAnnualRate_TextChanged(object sender, TextChangedEventArgs e)
{
string s = Regex.Replace(((TextBox)sender).Text, @"[^\d,]", "");
((TextBox)sender).Text = s;
}
}
}
我有错误:
users.Add(new User() { Id = 4, interest_SDATE = start_date.ToShortDateString(), interest_EDATE = end_date.ToShortDateString() });
完全错误在:
interest_EDATE = end_date.ToShortDateString()
为什么我没有错误
interest_SDATE = start_date.ToShortDateString()
但是当我想在下一列中插入第二个日期时出现错误
interest_EDATE = end_date.ToShortDateString()
我无法将字符串转换为 system.datetime
解决方案
I have found a problem, i have changed public class user to:
public class User
{
public int Id { get; set; }
public DateTime interest_SDATE { get; set; }
public DateTime interest_EDATE { get; set; }
public decimal interest_PRINCIPLE { get; set; }
public decimal interest_ANNUALRATE { get; set; }
public decimal interest_DAILYINTEREST { get; set; }
public decimal interest_TOTALINTEREST { get; set; }
public decimal interest_TOTAL { get; set; }
and then:
users.Add(new User() { Id = 4, interest_SDATE = start_date, interest_EDATE = end_date, interest_PRINCIPLE = principle, interest_ANNUALRATE = annualRate_decimal,
interest_DAILYINTEREST = dailyRate, interest_TOTALINTEREST = totalRate, interest_TOTAL = total});
start working well. Thanks guys
推荐阅读
- android - 加密使用 Android Logback 创建的 Zip 文件
- fitnesse - 如何在 DBFit 中管理不同的 DBMS?
- jquery-select2 - 使用 jquery.steps 时 Select2 不起作用
- r - R命名列表到data.frame的列表
- php - 由于查询速度慢而导致 CPU 使用率极高的 Wordpress 网站
- react-native - 我如何随机化我的背景图像 React Native
- python - 未找到 PythonAnywhere 模块
- javascript - Javascript冒泡排序在Reactjs中排序排名表
- python - 如何解决这个问题?pytube.exceptions.RegexMatchError: get_ytplayer_config: 找不到匹配的 config_patterns
- c++ - 在directx12中将深度缓冲区值读回CPU