【发布时间】:2015-12-17 15:15:08
【问题描述】:
我正致力于在 GridView 中显示一些数据,并且正在使用 ObjectDataSource。我的代码看起来像这样
.aspx:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem Text="Employee" Value="Name"></asp:ListItem>
<asp:ListItem Text="Department" Value="Department"></asp:ListItem>
</asp:DropDownList>
<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Go" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="Clear" OnClick="Button2_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="true" PageSize="30" EmptyDataText="No data available" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="ObjectDataSource1" >
<Columns>
<asp:BoundField DataField="Employee" HeaderText="Employee" ReadOnly="True" SortExpression="" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="Department" HeaderText="Department" ReadOnly="True" SortExpression="" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="Employees" SelectMethod="EmployeesData" />
我正在使用下拉列表和搜索框过滤 GridView 中的数据。
aspx.cs:
protected void Button1_Click(object sender, EventArgs e)
{
ViewState.Add("test", true);
if (DropDownList1.SelectedValue.ToString() == "Employee")
{
ObjectDataSource1.FilterExpression = "Employee LIKE '%" + TextBox1.Text + "%' ";
}
else if (DropDownList1.SelectedValue.ToString() == "Department")
{
ObjectDataSource1.FilterExpression = "Department LIKE '%" + TextBox1.Text + "%' ";
}
}
我正在像这样从数据库中加载我的数据 .cs:
public static class Employees
{
public static DataTable EmployeesData()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["db.vw_EmployeesConnectionString"].ConnectionString))
using (SqlCommand command = new SqlCommand("SELECT Employee, Department FROM vw__Employees WHERE ....", conn))
{
DataTable data = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(command);
adapter.Fill(data);
return data;
}
}
}
现在这一切都很好。但是,我现在让客户来找我说,在显示任何数据之前,他们想按部门过滤它(之前可能已经想到了..)。所以基本上他们想要一个带有下拉列表的过滤器功能,就像我在任何数据实际加载到 GridView 之前已经实现的那样,然后只加载与特定部门相关的数据。有人建议如何在不重写我的大部分代码的情况下最有效地做到这一点吗?
【问题讨论】:
-
所以你想在页面加载时在下拉菜单中预先选择一个部门?
-
不会有一个包含不同部门的下拉列表,然后用户将选择其中一个部门并显示相关数据