2011-04-19 369 views
1

为什么我会收到跟随错误? 我可以看到数据,当我做测试运行查询!'GridView1'的DataSourceID必须是IDataSource类型的控件的ID

Server Error in '/' Application. 
The DataSourceID of 'GridView1' must be the ID of a control of type IDataSource. A control with ID 'MyDataSource' could not be found. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: The DataSourceID of 'GridView1' must be the ID of a control of type IDataSource. A control with ID 'MyDataSource' could not be found. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 

[HttpException (0x80004005): The DataSourceID of 'GridView1' must be the ID of a control of type IDataSource. A control with ID 'MyDataSource' could not be found.] 
    System.Web.UI.WebControls.DataBoundControl.GetDataSource() +8556294 
    System.Web.UI.WebControls.DataBoundControl.ConnectToDataSourceView() +37 
    System.Web.UI.WebControls.DataBoundControl.OnLoad(EventArgs e) +19 
    System.Web.UI.Control.LoadRecursive() +50 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627 


Version Information: Microsoft .NET Framework Version:2.0.50727.4927; ASP.NET Version:2.0.50727.4927 

下面是我的源:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    </div> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataSourceID="MyDataSource"> 
     <Columns> 
      <asp:BoundField DataField="Colum1" HeaderText="Colum1" 
       SortExpression="Colum1" /> 
      <asp:BoundField DataField="Column2" HeaderText="Column2" 
       SortExpression="Column2" /> 
      <asp:BoundField DataField="Column3" HeaderText="Column3" 
       SortExpression="Column3" /> 
     </Columns> 
    </asp:GridView> 
    </form> 
</body> 
</html> 
+0

如果您可以发布表单设计代码,会更好。 – 2011-04-19 16:18:54

回答

4

的问题是,不存在与ID MyDataSource这是GridViewDataSourceID属性的值的形式上没有数据源的控制。

<asp:GridView ID="GridView1" runat="server" DataSourceID="MyDataSource"></asp:GridView> 
<asp:SqlDataSource ID="MyDataSource" runat="server"></asp:SqlDataSource> 

在上面的例子中,我使用了一个SqlDataSource。但是,任何数据源控件都会执行并且其ID值必须与GridView的DataSourceID属性中使用的值匹配。

另一件要检查的是标记是有效的。也就是说,没有缺失的尖括号,form标签外没有任何东西。母版页位于内容区域之外的内容页面上没有任何内容。等等。

+0

是的,它是有 – SmartestVEGA 2011-04-19 16:17:21

+0

@SmartestVEGA - 你是否证实标记是有效的?表单标签之外什么也没有?主页面的任何内容都不包含内容区域以外的内容(包括数据源控件)? – Thomas 2011-04-19 16:20:58

+0

我已添加前端源..请看看 – SmartestVEGA 2011-04-19 16:30:41

0

DataSourceID应该是页面上数据源控件的ID。如果您在代码隐藏中绑定,则不要设置DatasourceID。当网页使用了母版和ObjectDataSource是在不同asp:content控制的范围

+0

我没有做任何代码隐藏 – SmartestVEGA 2011-04-19 16:17:43

1

也会发生这种情况

+0

好人,那是我的问题,谢谢 – Lambda 2015-02-11 17:08:05

0

只是在GridView删除此:

DataSourceID="MyDataSource" 

如果从填充代码隐藏

相关问题