繁体   English   中英

调用SelectedIndexChanged时GridView为空

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM