【发布时间】:2015-09-04 01:00:50
【问题描述】:
我在 Visual Studio 中有一个连接的 SQL 数据库,并在网格中显示它的内容。 我创建了一个下拉菜单,其中列名称作为可选选项和一个文本字段来过滤特定内容,例如,DropDown = "Start" - Textfield = 14.03.2015 = Filter Column "Start" for each entry that contains "14.03.2015 " - 并将其显示在 Grid 中。
我基本上已经完成了那部分。我面临的唯一问题是每当我输入日期时 - 例如,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# 和编程本身是完全陌生的。 我希望有人能帮助我。
【问题讨论】:
-
要清理您的代码,请考虑为您的 DropDownList 使用
enum。此外,请使用 switch 语句而不是所有那些if else语句。 -
您好,感谢您的回复。我会确保在我的代码正常工作后立即清理它。
-
我还建议为您的对象命名。 Button1、DropDownList1 毫无用处,当您在给定屏幕上获得多个控件时,它们将成为一场噩梦。
-
好吧,我只有两个按钮,一个文本字段和一个 DropDownMenu。不会有比目前更多的功能,所以我认为我很好。不过还是谢谢你的建议。
-
是否可以运行一些需要指定日期的代码,例如2015 年 3 月 15 日,然后找到当天的开始和结束时间,例如15:03:2015 00:00:01 和 15:03:2015 23:59:59 可能存储为一个元组,然后带回该元组范围内的每个结果?
标签: c# sql sql-server gridview filter