【发布时间】:2015-05-26 05:03:19
【问题描述】:
所以我有一个绑定到一些数据的 .aspx 页面。我可以运行 LINQ 查询并将其作为 GridView 控件的 SelectMethod 中的 IQueryable 对象返回,它会很好地填充。我要做的是根据从 ListBox 控件中选择的内容填充 GridView。由于数据是绑定的,我无法将 DataSource 设置为等于查询。我可能会想出一种方法来基于公共字符串(这又将基于 ListBox 选择)重新使用 SelectMethod,但这会非常难看。
这是我的 .aspx 页面上的 gridview 控件:
<asp:GridView runat="server" ID="employeesGrid"
ItemType="Foo.Models.Employee" DataKeyNames="EmployeeID"
SelectMethod="employeeGrid_GetData"
AutoGenerateColumns="false">
<Columns>
<asp:DynamicField DataField="EmployeeID" />
<asp:DynamicField DataField="FirstName" />
<asp:DynamicField DataField="LastName" />
<asp:DynamicField DataField="CompanyName" />
</Columns>
</asp:GridView>
这是我在 .cs 中的 SelectMethod:
public IQueryable<Employee> employeeGrid_GetData()
{
FooContext db = new FooContext();
var query = db.Employees.Where(e => e.CompanyName == "NameOfCompany");
return query;
}
加载时填充 GridView 的效果很好,但点击更新对我来说并没有多大作用。
这是我尝试过但不起作用的按钮单击方法。当 GridView 绑定到数据模型时,我收到关于无法使用 DataSource 或 DataSourceId 的错误:
public void btn_RequestEmployees_Click(object sender, EventArgs e)
{
string currentlySelectedEmployer = lstbxEmployers.SelectedValue.ToString();
FooContext db = new FooContext();
var query = db.Employees.Where(employee => employee.CompanyName == currentlySelectedEmployer);
employeesGrid.DataSource = query;
DataBind();
}
有什么建议吗?谢谢。
【问题讨论】:
-
添加了我试过的代码。