我正在開發一個基本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