&引用;DataSource和DataSourceID都定义为;使用ASP.NET GridView时出错
“DataSource和DataSourceID都是在'grdCommunication'上定义的。请删除一个定义。” 我今天刚收到这个错误,代码一直在工作,直到今天下午我发布了最新版本到我们的服务器,它在本地和服务器上都出现了这个错误。我不使用“DataSourceID”,应用程序将数据库查询读入datatable,并将datatable设置为GridView上的数据源。我在VisualStudio中进行了搜索,搜索了整个解决方案,字符串“DataSourceID”甚至没有出现在整个解决方案的一行代码中。这是第一件让我抓狂的事 我想它昨天就开始工作了,所以我把代码恢复到昨天的版本。错误仍然存在。我一直在回顾一个构建,但问题仍然存在。我回去一个月了,我仍然得到同样的错误。这个应用程序今天早上运行正常吗?实际上没有任何代码更改,应用程序中也没有在任何GridView上设置DataSourceID的位置。有人见过这样的事吗 如果从未设置DataSourceID,如何获得该错误。。。“DataSourceID”这个词不在我的解决方案中?我只是在整棵树上做了一个wingrep,在datasourceid上做了一个不区分大小写的搜索。。。。什么也没找到。这个词在整个应用程序中绝对不存在&引用;DataSource和DataSourceID都定义为;使用ASP.NET GridView时出错,asp.net,gridview,Asp.net,Gridview,“DataSource和DataSourceID都是在'grdCommunication'上定义的。请删除一个定义。” 我今天刚收到这个错误,代码一直在工作,直到今天下午我发布了最新版本到我们的服务器,它在本地和服务器上都出现了这个错误。我不使用“DataSourceID”,应用程序将数据库查询读入datatable,并将datatable设置为GridView上的数据源。我在VisualStudio中进行了搜索,搜索了整个解决方案,字符串“DataSourceID”甚至没有出现在整个解决方案的
<asp:GridView ID="grdCommunication" runat="server"
Height="130px" Width="100%"
AllowPaging="true" >
... standard grid view column setup here...
</asp:GridView>
// Code behind.. to set the datasource
DataSet dsActivity = objCompany.GetActivityDetails();
grdCommunication.DataSource = dsActivity;
grdCommunication.DataBind();
... 标准网格视图列设置在此。。。
//代码隐藏。。设置数据源的步骤
数据集dsActivity=objCompany.GetActivityDetails();
grdCommunication.DataSource=dsActivity;
grdCommunication.DataBind();
//更新:删除了一些令人困惑的注释 试试这个:
DataSet dsActivity = objCompany.GetActivityDetails();
grdCommunication.DataSource = dsActivity.Tables[0];
grdCommunication.DataBind();
tslib是对的,不要做:
grdCommunication.DataSourceID=null;
或字符串。空版本。只有在为绑定使用SqlDataSource或ObjectDataSource控件时,才使用DataSourceID
它被称为“声明性”绑定,因为您正在使用页面上的“声明”控件。绑定到控件不需要调用DataBind()方法
因为您正在手动进行数据绑定(调用grd.DataBind()),所以您只需设置DataSource,然后调用DataBind()。神圣之烟蝙蝠侠。表名已更改,导致我的数据源不好。但是这个错误信息在这种情况下没有任何意义。因此,从技术上讲,如果我按索引而不是按名称调用表,tsilb的解决方案将有效,因此我将标记他的解决方案为正确
在阅读了他的文章之后,我尝试了dsActivity.Tables[“Activities”],而不是将数据集传递给数据源,并将表名传递给Datamember,这显然不起作用,但是如果我传递了实际的索引(我不喜欢这样做,因为该索引可能会更改),那么它现在就起作用了。但最糟糕的是,那是个错误。。至于问题是什么,那个错误是完全错误的。我说我定义了两者,并删除了一个,但事实并非如此。另一件非常糟糕的事情是,表名只被改成全大写。。。但是,嘿,“活动”和“活动”是不同的键 我遇到了同样的错误,但问题和解决方案完全不同。在我的例子中,我使用LINQtoSQL填充一些下拉列表,然后缓存结果以获得进一步的页面视图。所有内容都可以通过清除缓存正常加载,然后在后续页面视图中出错
if (Cache["countries"] != null)
{
lbCountries.Items.Clear();
lbCountries.DataValueField = "Code";
lbCountries.DataTextField = "Name";
lbCountries.DataSource = (Cache["countries"]);
lbCountries.DataBind();}
else
{
var lstCountries = from Countries in db_read.Countries orderby Countries.Name select Countries;
lbCountries.Items.Clear();
lbCountries.DataValueField = "Code";
lbCountries.DataTextField = "Name";
lbCountries.DataSource = lstCountries.ToList();
lbCountries.DataBind();
Cache.Add("countries", lstCountries, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 240, 0), System.Web.Caching.CacheItemPriority.High, null);
}
问题来自:
Cache.Add(“countries”,lstCountries,null,System.Web.Caching.Cache.noabsoluteexpntiation,新时间跨度(0,240,0),System.Web.Caching.CacheItemPriority.High,null)
当它应该是:
Cache.Add(“countries”,lstCountries.ToList(),null,System.Web.Caching.Cache.noabsoluteexpntiation,新时间跨度(0,240,0),System.Web.Caching.CacheItemPriority.High,null) 我今天遇到了这个错误,结果发现它与DataSourceID无关,而与DataSource本身有关 我的DataSource有一个问题,我没有得到DataSource相关的错误,而是得到了这个毫无意义的错误
确保您的DataSource是良好的,并且此错误应该会消失。始终将带有表索引的dataset绑定到gridview 例如gridgrdCommunication.表[0];如上Tsilb所述 你故意写的第二种方式 gridgrdCommunication.DataSourceID=String.Empty; gridgrdCommunication.DataSource=ds;
gridgrdCommunication.DataBind() 检查您的数据库结构。。。。如果要加入数据,请抛出一个dbml文件,数据库中的表结构与dbml文件结构不同。如果要使用对象数据源,并希望有条件地在后台代码中重新加载网格,则可以成功执行以下操作:
Dim datatable As DataTable = dataset.Tables(0)
Dim dataSourceID As String = gvImageFiles.DataSourceID
gvImageFiles.DataSourceID = Nothing
gvImageFiles.DataSource = datatable.DefaultView
gvImageFiles.DataBind()
gvImageFiles.DataSource = Nothing
gvImageFiles.DataSourceID = dataSourceID
在此grdCommunication.DataSource=dsActivity之前替换此代码
grdCommunication.DataBind();
grdCommunication.DataSourceID="";
您需要选择一种绑定网格的方法 如果它来自代码隐藏意味着使用c#代码,则从网格的设计视图中删除网格视图中的datasourceid属性 像这样 //你必须这样做 请尝试以下方法: gvCustomerInvoiceList.DataSourceID=“”; gvCustomerInvoiceList.DataSource=ci_数据; gvCustomerInvoiceList.DataBind()
我今天犯了这个错误。事实证明,我的存储过程既不返回任何记录,也不返回结构。这是因为我有一个空的
try-catch
,没有raiserror
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Page.DataBind()
End Sub
Function GetData()
Dim dt As New DataTable
Try
dt.Columns.Add("ROOM_ID", GetType(String))
dt.Columns.Add("SCHED_ID", GetType(String))
dt.Columns.Add("TIME_START", GetType(Date))
dt.Columns.Add("TIME_END", GetType(Date))
Dim dr As DataRow = dt.NewRow
dr("ROOM_ID") = "Indocin"
dr("SCHED_ID") = "David"
dr("TIME_START") = "2018-01-03 09:00:00.000"
dr("TIME_END") = "2018-01-03 12:00:00.000"
dt.Rows.Add(dr)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Return dt
End Function
并将其添加到您的item DataSource=“”在我的情况下,数据库的连接字符串不起作用。修复连接字符串后,此错误已被清除。很抱歉,grdCommunication.DataMember也已设置,但我没有设置。但我也试过那样做。这不好。我现在正在从代码中删除网格视图,只是为了让应用程序启动并运行