我想创建advence搜索,但我有问题获得RadioButton值和DataPicker值。
这是我的Xml代码:
<PersianDateControls:PersianDatePicker Name="DateEndPicker" HorizontalAlignment="Left" Margin="32,470,0,0" VerticalAlignment="Top" Width="115" Background="White" Height="25" Grid.Column="2"/>
<PersianDateControls:PersianDatePicker Name="DateStartPicker" HorizontalAlignment="Left" Margin="32,418,0,0" VerticalAlignment="Top" Width="115" Background="White" Grid.Column="2"/>
<RadioButton x:Name="Rad_Active" Content="Active" IsChecked="True" HorizontalAlignment="Left" Margin="407,433,0,0" VerticalAlignment="Top" Foreground="White" FontFamily="Iranian Sans"/>
<RadioButton x:Name="Rad_DeActive" Content="DeActive" HorizontalAlignment="Left" Margin="272,433,0,0" VerticalAlignment="Top" Foreground="White" FontFamily="Iranian Sans"/>
我该如何解决这个问题?
private void btn_search_MouseDown(object sender, MouseButtonEventArgs e)
{
string Name = txt_Name.Text;
string Family = txt_family.Text;
var QSearch = db.Tbl_User.Where(u => u.Name == Name).Where(u => u.Family == Family).ToList();
dataGrid.ItemsSource = QSearch;
}
当我使用此代码进行compate to date时显示此错误
修改
当我使用RadioButton时显示此错误
bool Active;
if (Rad_Active.IsChecked) // Error 1 here
{
Active = true;
}
else if (Rad_DeActive.IsChecked) // Error 1 here
{
Active = false;
}
错误1
无法隐式转换类型“bool?” “bool”。
DateTime Date = DateEndPicker.SelectedDate; // Error 2 here
错误2
无法将类型'Arash.PersianDate'隐式转换为'System.DateTime'
PersianDate DateEnd = DateEndPicker.SelectedDate;
PersianDate DateStart = DateEndPicker.SelectedDate;
var QSearch = db.Tbl.User.Where(u => u.Name == Name)
.Where(u => u.Family == Family)
.Where(u => u.Active == Active)
.Where(u => u.DateReg >= DateStart && u.DateReg <= DateEnd).ToList(); // Error 3 here
dataGrid.ItemsSource = QSearch
错误3
严重级代码描述项目文件行抑制状态 错误CS0019运算符'&gt; ='无法应用于'DateTime'和'PersianDate'类型的操作数AnbarDari F:\ MyProject \ AnbarDari \ AnbarDari \ Win_Users.xaml.cs 77活动
答案 0 :(得分:1)
只需一个单选按钮即可。只需设置bool? Active = Rad_Active.IsChecked
这将根据该单个复选框的状态设置您的活动标记。
答案 1 :(得分:0)
由于IsChecked
是一个可空的布尔,你不能只做一个直接演员。如果它为null则转换将失败。相反,你可以这样做:
if (Rad_Active.IsChecked == true)
{
Active = true;
}
至于在PerisanDate
和常规DateTime
之间进行转换,会有一个返回常规DateTime
的方法或属性,但不知道您正在使用哪个选择器很难给出一个明确的答案。 IDE应该能够通过自动完成或查看类的定义为您提供一些线索(在Visual Studio中,右键单击 - &gt;转到定义)