我有一個DataGrid是動態綁定到數據庫查詢。用戶在文本字段中輸入一些搜索文本,單擊搜索,後面的代碼使用LINQ(基於字符串搜索表並返回一組有限的列)創建適當的數據庫查詢。GridView爲空時SelectedIndexChanged調用
然後,它將GridView數據源設置爲查詢並調用DataBind()。
protected void btnSearch_Click(object sender, EventArgs e)
{
var query = from record in DB.Table
where record.Name.Contains(txtSearch.Text) //Extra string checking etc. removed.
select new
{
record.ID,
record.Name,
record.Date
};
gvResults.DataSource = query;
gvResults.DataBind();
}
這工作正常。
當用戶在網格中選擇一行時,SelectedIndexChanged事件處理程序從網格中的行(其中一個字段)獲取該id,查詢來自DB的完整記錄,然後填充一組編輯器/詳細信息字段與記錄全部細節。
protected void gvResults_SelectedIndexChanged(object sender, EventArgs e)
{
int id = int.Parse(gvResults.SelectedRow.Cells[1].Text);
DisplayDetails(id);
}
這在我開發代碼的本地機器上正常工作。但是,在生產服務器上,函數調用成功,但行和列數爲gvResults
,griview爲0 - 表爲空。
gridview的viewstate被啓用,我看不到明顯的區別。我做了一些天真的假設,還是依賴於在調試中可能配置不同的東西?
本地我在VS2008上運行一個空的asp.net web項目以使開發更快。生產服務器正在運行sitecore CMS,因此配置相當不同。
任何想法或建議將是最受歡迎的。提前致謝!
啊是的,這也可能是事業的原因。它與Sitecore如何掛鉤頁面生命週期有關,我認爲很多人不完全瞭解這一點,並且可能也是他們的商業祕密之一。 我寫了這篇文章,但除此之外我不知道多少。 – 2010-04-08 11:14:52
哈哈!我沒有看到你的SO用戶名!爲博客提醒歡呼!SDN上還有一篇關於這方面的文章,但除非您有賬戶,否則它不可用。 – xan 2010-04-08 11:21:35