我在Visual Studio中有一个连接的SQL Server数据库,并在网格中显示其内容。我创建了一个下拉菜单,其中列名称为可选选项,文本字段用于过滤特定内容,例如,DropDown =“Start” - Textfield = 14.03.2015 =筛选列“开始”,表示包含“14.03.2015”的每个条目“ - 并将其显示在网格中。
我基本上完成了那部分。我所面临的唯一问题是每当我输入日期时 - 例如,14.03.2015它只显示从00:00:00开始的日期 - 其他不在00:00:00开始的条目将被忽略,我无法弄清楚如何修改它才能正常工作。
网格看起来像这样:http://abload.de/img/untitled123yqkyn.png
我正在使用以下C#代码进行过滤:
protected void Button1_Click(object sender, EventArgs e)
{
string FilterExpression = string.Empty;
if (DropDownList1.SelectedValue.ToString().Equals("Start"))
{
FilterExpression = string.Format("Start = '{0}'", TextBox1.Text);
}
else if (DropDownList1.SelectedValue.ToString().Equals("End"))
{
FilterExpression = string.Format("End = '{0}'", TextBox1.Text);
}
else if (DropDownList1.SelectedValue.ToString().Equals("Creation Time"))
{
FilterExpression = string.Format("DateTimeCreated = '{0}'", TextBox1.Text);
}
else if (DropDownList1.SelectedValue.ToString().Equals("Last Modified"))
{
FilterExpression = string.Format("LastModifiedTime = '{0}'", TextBox1.Text);
}
else
{
FilterExpression = string.Concat(DropDownList1.SelectedValue, " Like '%{0}%'");
}
SqlDataSource1.FilterParameters.Clear();
SqlDataSource1.FilterParameters.Add(new ControlParameter(DropDownList1.SelectedValue, "TextBox1", "Text"));
SqlDataSource1.FilterExpression = FilterExpression;
}
请原谅代码的质量,我对C#完全不熟悉,也就是编程本身。我希望有人能够帮助我。
答案 0 :(得分:0)
在日期字段上使用强制转换语句删除时间部分,如下所示:
FilterExpression = string.Format("CAST(Start AS DATE) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CAST(End AS DATE) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CAST(End AS DATE) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CAST(LastModifiedTime AS DATE) = '{0}'", TextBox1.Text);
此外,如果您的输入是日期,请尝试:
FilterExpression = string.Format("CONVERT(date,Start) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(date,End) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(date,End) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(date,LastModifiedTime) = '{0}'", TextBox1.Text);
最后但并非最不重要的是,如果你的输入是varchar,那么试试这个:
FilterExpression = string.Format("CONVERT(varchar,Start,101) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(varchar,End,101) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(varchar,End,101) = '{0}'", TextBox1.Text);
FilterExpression = string.Format("CONVERT(varchar,LastModifiedTime,101) = '{0}'", TextBox1.Text);