Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
&引用;DataSource和DataSourceID都定义为;使用ASP.NET GridView时出错_Asp.net_Gridview - Fatal编程技术网

&引用;DataSource和DataSourceID都定义为;使用ASP.NET GridView时出错

&引用;DataSource和DataSourceID都定义为;使用ASP.NET GridView时出错,asp.net,gridview,Asp.net,Gridview,“DataSource和DataSourceID都是在'grdCommunication'上定义的。请删除一个定义。” 我今天刚收到这个错误,代码一直在工作,直到今天下午我发布了最新版本到我们的服务器,它在本地和服务器上都出现了这个错误。我不使用“DataSourceID”,应用程序将数据库查询读入datatable,并将datatable设置为GridView上的数据源。我在VisualStudio中进行了搜索,搜索了整个解决方案,字符串“DataSourceID”甚至没有出现在整个解决方案的

“DataSource和DataSourceID都是在'grdCommunication'上定义的。请删除一个定义。”

我今天刚收到这个错误,代码一直在工作,直到今天下午我发布了最新版本到我们的服务器,它在本地和服务器上都出现了这个错误。我不使用“DataSourceID”,应用程序将数据库查询读入datatable,并将datatable设置为GridView上的数据源。我在VisualStudio中进行了搜索,搜索了整个解决方案,字符串“DataSourceID”甚至没有出现在整个解决方案的一行代码中。这是第一件让我抓狂的事

我想它昨天就开始工作了,所以我把代码恢复到昨天的版本。错误仍然存在。我一直在回顾一个构建,但问题仍然存在。我回去一个月了,我仍然得到同样的错误。这个应用程序今天早上运行正常吗?实际上没有任何代码更改,应用程序中也没有在任何GridView上设置DataSourceID的位置。有人见过这样的事吗

如果从未设置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();

... 标准网格视图列设置在此。。。
//代码隐藏。。设置数据源的步骤
数据集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也已设置,但我没有设置。但我也试过那样做。这不好。我现在正在从代码中删除网格视图,只是为了让应用程序启动并运行