“DataSource和DataSourceID都在'grdCommunication'上定义。删除一个定义。”
我今天刚收到此错误,代码一直工作到今天下午我将最新版本发布到我们的服务器上,它在本地和服务器上都出现了错误。我不使用“DataSourceID”,应用程序将数据库查询读入数据表并将数据表设置为GridViews上的DataSource。我在Visual Studio中进行了搜索,搜索整个解决方案,并且字符串“DataSourceID”在整个解决方案中甚至没有出现在1行代码中。这是吓坏我的第一件事。
我认为它昨天一直在工作,所以我将代码恢复到昨天的版本。错误仍然存在。我一直在回建筑,但问题仍然存在。我回去了一个月,我仍然得到同样的错误。这个应用今天早上工作正常吗?实际上没有代码更改,并且应用程序中的任何位置都没有在任何gridview上设置DataSourceID EVER。有没有人见过这样的事情?
如果从未设置过DataSourceID,我怎么能得到那个错误...而且我的解决方案中没有“DataSourceID”这个词?我刚刚对整个树做了一个wingrep,对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();
//更新:删除了一些令人困惑的笔记。
答案 0 :(得分:9)
试试这个:
DataSet dsActivity = objCompany.GetActivityDetails();
grdCommunication.DataSource = dsActivity.Tables[0];
grdCommunication.DataBind();
答案 1 :(得分:4)
圣烟蝙蝠侠。表名已更改,导致我的数据源不好。但是在这种情况下,该错误消息没有任何意义。所以从技术上讲,如果我通过索引而不是名字来调用表,那么tsilb的解决方案将会起作用,因此我将他的解决方案标记为正确。
阅读完他的帖子之后,我尝试了dsActivity.Tables [“Activities”],而不是将数据集传递给Datasource,而将表名传递给Datamember,显然这不起作用,但如果我传递实际索引,我不喜欢这样做,因为索引可能会改变,然后它现在正在工作。但是搞砸的部分,就是那个错误..那个错误完全偏离了问题所在。说我定义了两个并删除了一个,而实际上并非如此。而另一个真正混乱的事情是,表名只是变成了大写......但是,嘿,“活动”是一个与“活动”不同的关键。
答案 2 :(得分:3)
在此grdCommunication.DataSource = dsActivity;
之前替换此代码grdCommunication.DataBind();
grdCommunication.DataSourceID="";
答案 3 :(得分:1)
tslib是对的,不要这样做: grdCommunication.DataSourceID = null; 或string.Empty版本。如果您使用SqlDataSource或ObjectDataSource控件进行绑定,则只使用DataSourceID。
它被称为“声明性”绑定,因为您在页面上使用“声明”控件。绑定到控件不需要调用DataBind()方法。
因为您手动进行DataBinding(调用grd.DataBind()),所以只需设置DataSourrce然后调用DataBind()。
答案 4 :(得分:0)
我遇到了同样的错误,但是完全不同的问题和解决方案。在我的例子中,我使用LINQ to SQL来填充一些下拉列表,然后缓存结果以进一步查看页面。使用清除缓存可以很好地加载所有内容,然后在后续页面视图中出错。
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.NoAbsoluteExpiration,new TimeSpan(0,240,0),System.Web.Caching.CacheItemPriority.High,null );
应该是什么时候: Cache.Add(“countries”, lstCountries.ToList(), null,System.Web.Caching.Cache.NoAbsoluteExpiration,new TimeSpan(0,240,0),System.Web.Caching.CacheItemPriority .High,null);
答案 5 :(得分:0)
今天我收到了这个错误,结果发现它与DataSourceID无关,而且与DatasSource本身有关。
我的DatasSource出了问题,而不是收到与DatasSource相关的错误,我得到了这个毫无意义的错误。
确保你的DatasSource很好,这个错误应该消失。
答案 6 :(得分:0)
始终将数据集与表索引绑定到gridview ...
离。 gridgrdCommunication.Table [0];如上所述Tsilb
你有意写的第二种方式..
gridgrdCommunication.DataSourceID = String.Empty; gridgrdCommunication.DataSource = DS; gridgrdCommunication.DataBind();
答案 7 :(得分:0)
检查你的数据库结构....如果你正在加入你的数据抛出一个dbml文件,你的数据库中的表结构是不同的dbml文件结构
答案 8 :(得分:0)
如果您正在使用对象数据源并希望在代码中有条件地重新加载网格,则可以成功执行此操作:
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
答案 9 :(得分:0)
您需要选择一种方法来绑定网格 如果来自代码隐藏意味着使用c#代码然后从网格视图中删除datasourceid属性从网格的设计视图 像这样
//你必须这样做
答案 10 :(得分:0)
请试试这个:
gvCustomerInvoiceList.DataSourceID =“”; gvCustomerInvoiceList.DataSource = ci_data; gvCustomerInvoiceList.DataBind();
答案 11 :(得分:0)
我今天收到了这个错误。事实证明,我的存储过程既没有返回任何记录也没有返回结构。这是因为我有一个空Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME+"
WHERE "+STATUS+" = "+"'0'" + " ORDER BY id DESC LIMIT 10", null);
return cursor ;
而没有try catch
。
答案 12 :(得分:0)
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
并将其添加到您的商品DataSource =&#34;&lt;%#GetData()%&gt;&#34;
答案 13 :(得分:0)
就我而言,与数据库的连接字符串不起作用。修复连接字符串可以解决此错误。