Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SharePoint web部件-SQL语句未反映更改_C#_Sql Server 2005_Sharepoint_Web Parts - Fatal编程技术网

C# SharePoint web部件-SQL语句未反映更改

C# SharePoint web部件-SQL语句未反映更改,c#,sql-server-2005,sharepoint,web-parts,C#,Sql Server 2005,Sharepoint,Web Parts,我最近用C#编写了一个SharePoint web部件,它通过一些基于用户选择的参数化查询从SQL数据库中提取信息。这涉及从datareader填充的dropdownlist中的客户列表,如下所示: while (dr.Read()) { string customerNameAndCity = dr.GetSqlString(1).Value + " - " + dr.GetSqlString(2).Value; customers.Items.Add(new

我最近用C#编写了一个SharePoint web部件,它通过一些基于用户选择的参数化查询从SQL数据库中提取信息。这涉及从datareader填充的dropdownlist中的客户列表,如下所示:

while (dr.Read())
{
    string customerNameAndCity = dr.GetSqlString(1).Value + " - " +
        dr.GetSqlString(2).Value;
    customers.Items.Add(new ListItem(customerNameAndCity, dr.GetSqlString(0).ToString()));
}
基本上,它读取每个客户的名称和城市,并将输出连接成一个字符串,该字符串添加到dropdownlist(称为“客户”)的Items集合中。它使用的SQL命令是:

SELECT fldCustomer_ID, fldCustomerName, fldCity
FROM dbo.tblCustomers
WHERE fldActive = 'True'
ORDER BY fldCustomerName
显然,有一列名为“fldActive”,当该字段设置为“True”时,它允许这段代码将该客户添加到此dropdownlist

到目前为止,我还没有遇到任何问题。但是,今天早上我将一个测试客户的fldActive列设置为“True”,以便测试一些新存储的进程,并尝试查看该客户的信息。不走运。客户的信息不会显示在我的dropdownlist中。然后我做了一个iisreset并重置了数据库(SQLServer2005)。还是不走运。因此,我打开了源代码,逐步介绍了填充此dropdownlist的方法。当我逐步浏览它时,我可以看到测试客户的数据实际上已经加载,文本被连接,Items.Add也毫无例外地完成了。循环完成后,我检查了customers dropdownlist,事实上,条目就在那里。然而,一旦页面加载,我就遇到了同样的问题:所有的条目都出现了;测试客户根本不在那里。没有空的条目或任何东西;这简直就像它从未居住过一样

我能想到的唯一一件事是某处正在进行一些缓存,但我不知道为什么会发生这种情况。我也清除了IE缓存,我假设在这和iisreset和数据库重启之间,我会被覆盖。提前感谢您提供的任何帮助

编辑:我刚刚完全重启了服务器,现在信息显示正确了。显然,需要重新启动单个组件才能正确显示。有人知道那可能是什么吗?这显然不是数据库或IIS,我不想每次数据更改时都重新启动整个服务器


编辑:我又遇到了这个问题。这次,我更改了SELECT语句以添加一个字段,更改了ORDERBY语句,更新了服务器上的web部件,并运行了它。ORDER BY得到尊重,但新字段未显示。Sql Profiler向我显示新的SELECT语句在查询中,Fiddler显示HTTP请求没有问题,我清除了IE缓存,但该列没有在.aspx页面中呈现。这一次,即使一个完整的服务器重新启动也没有帮助。

你考虑浏览器缓存吗?看起来很傻,但给我带来麻烦的次数却多得数不清


解决此问题的一种方法是使用免费工具Fiddler(或其他一些http流量监视器)监视内容在服务器和浏览器之间来回移动

强制浏览器重新加载页面的一种方法是向URL添加随机查询参数。
另一种方法是使用

那可能是。如果我再遇到那个问题,我就得检查一下。到目前为止,当我在数据库中更改数据时,数据似乎立即可用,无论是直接更改还是通过我构建的前端更改。谢谢提示!当我再次遇到此问题时,我将研究这两种方法。我尝试以编程方式调整缓存设置,但SharePoint似乎不太尊重它们。我听说这是SP的问题,我不能让它正常工作,但是它在我创建的标准.ASPX测试页面上工作得很好。我认为这是正确的答案,因为它通常是有效的,尽管有时候SharePoint不能玩得很好。