C# 使用OnClick事件更新Gridview

C# 使用OnClick事件更新Gridview,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我正在开发一个基本的web表单,允许用户搜索数据库中的某些列,并在GridView中显示这些记录。我有几个文本框控件,允许用户搜索名称、id等。我使用LinqToSql作为数据访问层。这是你的基本搜索表 问题在于我试图使用的GridView显示数据。我在按钮控件的OnClick事件方法中有查询本身 protected void SearchSpecific_Click(object sender, EventArgs e) { MyDataContext dbContext =

我正在开发一个基本的web表单,允许用户搜索数据库中的某些列,并在GridView中显示这些记录。我有几个文本框控件,允许用户搜索名称、id等。我使用LinqToSql作为数据访问层。这是你的基本搜索表

问题在于我试图使用的GridView显示数据。我在按钮控件的OnClick事件方法中有查询本身

protected void SearchSpecific_Click(object sender, EventArgs e)
    {
    MyDataContext dbContext = new MyDataContext();
    var results = from row in dbContext.MyTable
                  select row;

    if(TextBoxIsValid(IDNumber))
        results = results.Where(m => m.ID == Int32.Parse(IDNumber.Text));

    if (validationFlag)
    {
        // this part doesn't seem right
        SearchResultDataset.DataSource = results;
        SearchResultDataset.DataBind();
    }
}
这是gridview,不过没什么特别的:

<asp:GridView ID="SearchResultDataset" runat="server"
    AlternatingRowStyle-CssClass="alt"
    CssClass="search_results"
    GridLines="None"
    AutoGenerateColumns="true"></asp:GridView>
我发现了一个例外:

System.Reflection.TargetInvocationException: Property accessor 'IsPostBack' on object 'MySite.MySite' threw the following exception:'Object reference not set to an instance of an object.' ---> System.NullReferenceException: Object reference not set to an instance of an object.
在System.Web.UI.UserControl.get_IsPostBack()上

异常肯定是在DataBind()方法中引发的。这就提出了WTF正在进行的问题?我似乎无法将linqtosql源绑定到我的GridView。我似乎找不到该页面,但我在某处读到GridView很难绑定到任何不是DataSet对象的对象

更新


使用SqlDataSource控件访问数据库。

您的问题似乎是试图将dataview绑定到匿名类型。正如MSDN所说:

从以下查询创建DataView: 返回的匿名类型不是 支持

解决方案:使用.ToList()函数将该变量转换为dataview能够理解并可以使用的数据类型

像这样:

SearchResultDataset.DataSource = results.ToList();

Bump用于指出错误,但这并不是解析NullReference。更奇怪的是,我添加了一个LinqDataSource来不加区别地填充表,并抛出了一个NullReferenceException。但是,我知道我可以访问数据库,因为我用同一个表中的数据填充其他控件。这是一个奇怪的、令人沮丧的问题。我还必须在数据绑定控件中设置nulldisplaytext属性。为什么要删除帖子?这样不行。当您在此处发布问题时,您可以使用cc:wiki许可证将其授权给社区。在发布之前考虑这个问题。
SearchResultDataset.DataSource = results.ToList();