我有一个动态绑定到数据库查询的DataGrid。用户在文本字段中输入一些搜索文本,单击搜索,后面的代码使用LINQ创建相应的数据库查询(根据字符串搜索表并返回有限的列集)。
然后将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,因此配置方式有所不同。
欢迎任何想法或建议。提前谢谢!
答案 0 :(得分:1)
检查你的web.config。可能“AutomaticDataBind”属性在一个环境中设置为“false”,在开发框中设置为“true”。
显然,我无法确定,但我过去曾受到过类似问题的打击,症状与您在此描述的完全相同: - )
P.S。 Sitecore将此值默认为false。
答案 1 :(得分:0)