所以我有一个绑定到某些数据的.aspx页面。我可以运行LINQ查询并将其作为GridView控件的SelectMethod中的IQueryable对象返回,并且它将填充正常。我想要做的是根据ListBox控件中的选择填充GridView。由于绑定了数据,我无法将DataSource设置为等于查询。我可能想出一种方法来重新使用基于公共字符串的SelectMethod(这反过来又基于ListBox选择),但那将非常难看。
这是我的.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();
}
有什么建议吗?感谢。
答案 0 :(得分:0)
试试这样:
public IQueryable<Employee> employeeGrid_GetData()
{
string currentlySelectedEmployer = lstbxEmployers.SelectedValue.ToString();
FooContext db = new FooContext();
var query = db.Employees.Where(employee => employee.CompanyName == currentlySelectedEmployer);
return query;
}