[英]Gridview empty when SelectedIndexChanged called
我有一个动态绑定到数据库查询的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,从数据库中查询完整记录,然后使用记录填充一组编辑器/详细信息字段详细信息。
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,因此配置有所不同。
任何想法或建议都将受到欢迎。 提前致谢!
检查您的web.config。 在一个环境中,“ AutomaticDataBind”属性可能设置为“ false”,而在开发环境中则设置为“ true”。
显然,我不确定,但是过去我曾被类似的问题所困扰,而且症状完全像您在这里描述的那样:-)
PS Sitecore默认将此值设置为false。
在Sitecore论坛上进行了更多讨论之后,我遇到了这篇博客,解释了一种潜在的解决方案。
我在Web.config的<typesThatShouldNotBeExpanded>
部分中添加了<type>System.Web.UI.WebControls.GridView</type>
,它似乎对我们<typesThatShouldNotBeExpanded>
。
这似乎与sitecore的页面布局渲染管道有关,在该管道中,它扩展了子布局和内部占位符以生成完整的页面渲染。 它会访问页面上的.Net控件,并对其稍加拨动,这可能导致某些控件无法正常工作。
SDN上有一篇关于此的文章 ,尽管只有拥有足够特权帐户的用户才能阅读。 希望这可以在将来对其他Sitecore用户有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.