我正在开发一个基本Web窗体,允许用户搜索数据库中的某些列并在GridView中显示这些记录。我有几个TextBox控件,允许用户搜索名称,ID等。我正在为我的数据访问层使用LinqToSql。这是您的基本搜索表单。使用OnClick事件更新Gridview
麻烦来了,我试图使用显示数据的GridView。我在Button控件的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>
一切顺利,直到我到达的DataBind()方法和一个NullReferenceException被抛出。神圣的例外,蝙蝠侠!
调试器告诉我结果具有正确的值,但我有一种感觉,它与回发时绑定数据源有关。我觉得我错过了什么...有什么建议吗?如有必要,我可以提供堆栈跟踪。
编辑:
手头有一个更大的问题。我已经尝试将LinqDataSource和ObjectDataSource控件添加到我的页面,并且都抛出了NullReferenceException。我构建了两个使用GUI,他们看起来很完美。
在此之后我然后被分配一个数据源在Page_Load方法:
try
{
MyDataContext dbc = new MyDataContext();
SearchResultDataset.DataSource = dbc.MyTable;
SearchResultDataset.DataBind();
}
catch (Exception ex)
{
errText.InnerHtml = ex.ToString();
}
想出了这个异常:
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对象的东西。
UPDATE
二手SqlDataSource控件访问数据库。
你为什么想你撤职?它不这样工作。当您在此发布问题时,您可以使用cc:wiki许可证将其授权给社区。在发布之前考虑这个*。 – 2011-03-03 22:26:21