在按钮上更新数据绑定GridView单击

时间:2015-03-23 08:57:30

标签: c# asp.net linq gridview

所以我有一个绑定到某些数据的.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();
    }

有什么建议吗?感谢。

1 个答案:

答案 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;
    }