【问题标题】:GridView does not load schema from the SQL stored ProcedureGridView 不会从 SQL 存储过程中加载架构
【发布时间】:2011-07-15 18:53:49
【问题描述】:
我有 gridview,当我连接 sqldatasource 并运行应用程序时,会显示来自存储过程的数据,但是当我切换到设计模式时,架构不会加载到 gridview 中。我需要该架构来重新排列列并用于格式化。
以前没遇到过这个问题,突然就出问题了。
到目前为止我尝试了什么“刷新架构”会弹出一个对话框,其中列出了我传递给存储过程的所有参数。在我为每个参数更改 DBType 后,它仍然给我一个错误,说“检查你的连接和存储过程”。虽然storedprodure 确实运行,但它不应该自动更新gridview 中的模式。我仍然有默认的 3 列 gridview。
注意:我可以通过手动添加每一列来解决这个问题,但我这样做是为了解决页面中的问题,首先,不想在 gridview 问题中再次运行。这是我正在构建的新页面。谢谢
【问题讨论】:
标签:
asp.net
visual-studio-2008
stored-procedures
gridview
schema
【解决方案1】:
看起来,Schema 不是仅仅从 StoredProcedure 更新的,因为没有足够的信息来返回多少列。
要解决此问题并进行快速修复,请执行以下操作。
从存储过程中复制查询并将 SQLDatasource 从存储过程更改为 Select 语句。运行您的选择语句并完成。请注意,您的架构现在将被更新。
您现在可以将 SQLDataSource 设置回存储过程,并且架构将保持不变。
我还发现,当您运行存储过程时,查询中的列名会使用名称 'Databound col0' 'Databound Col1' 等进行更新
我不确定有时会,有时不会。右键单击 Gridview 并单击 Referesh Schema does not work,因为它给出了一些错误。
【解决方案2】:
按照@hmd 的思路,当没有足够的信息时,尤其是在返回另一个感知数据集时,即您正在执行返回空白或调试数据(受影响的行等)的操作。解决此问题的方法是将“SET NOCOUNT OFF”放在程序的开头,然后在返回数据之前再次将其设置回“ON”。这也是 SSRS 的问题。