Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 错误:找不到ObjectDataSource的TypeName属性中指定的类型_C#_Asp.net_Gridview - Fatal编程技术网

C# 错误:找不到ObjectDataSource的TypeName属性中指定的类型

C# 错误:找不到ObjectDataSource的TypeName属性中指定的类型,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个带有Sql连接的Datatable,正在尝试将其绑定到GridView,但是我得到一个错误,无法找到TypeName属性中指定的类型。 我的datatable代码如下所示: protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) { if (!IsPostBack) { SqlConnection conn = n

我有一个带有Sql连接的Datatable,正在尝试将其绑定到GridView,但是我得到一个错误,无法找到TypeName属性中指定的类型。 我的datatable代码如下所示:

 protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{


    if (!IsPostBack)
    {

        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "TestConnectionString";

        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "SELECT* FROM TestTable";

        DataTable data = new DataTable();

        SqlDataAdapter adapter = new SqlDataAdapter(command);

        adapter.Fill(data);

        GridView1.DataSource = data;

    }
以及.aspx中的代码:

 <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" >
        <Columns>
            <asp:BoundField DataField="Column1" HeaderText="Column1" ReadOnly="True" SortExpression="Column1" >
            <HeaderStyle Width="450px" />
            <ItemStyle HorizontalAlign="Center" />
            </asp:BoundField>
            <asp:BoundField DataField="Column2" HeaderText="Column2" ReadOnly="True" SortExpression="Column2" >
                <ItemStyle Width="400px" HorizontalAlign="Center" />
                </asp:BoundField>
        </Column>

    </asp:GridView>
   <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="DataTable" TypeName="data"></asp:ObjectDataSource>


关于我做错了什么的建议?

这不是使用
ObjectDataSource
控件的方式

如果您只想在第一次页面加载时绑定网格,则删除
ObjectDataSource
控件,删除
ObjectDataSource1\u选择事件处理程序,从
GridView
中删除
DataSourceID
属性,并在页面加载时仅绑定网格:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGrid();
    }
}

private void BindGrid()
{
    using (SqlConnection conn = new SqlConnection("your connection string here"))
    using (SqlCommand command = new SqlCommand("SELECT * FROM TestTable", conn))
    {
        DataTable data = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter(command);
        adapter.Fill(data);

        GridView1.DataSource = data;
        GridView1.DataBind();
    }
}

如果要使用
ObjectDataSource
控件,请为其指定有效的
TypeName
SelectMethod
,删除
ObjectDataSource1\u选择事件处理程序,并让
SelectMethod
返回数据:

public static class YourDataSource
{
    public static DataTable LoadSomeData()
    {
        using (SqlConnection conn = new SqlConnection("your connection string here"))
        using (SqlCommand command = new SqlCommand("SELECT * FROM TestTable", conn))
        {
            DataTable data = new DataTable();
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            adapter.Fill(data);
            return data;
        }
    }
}
标记:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    TypeName="YourDataSource"
    SelectMethod="LoadSomeData" 
/>
<asp:GridView ID="GridView1" runat="server" 
    AllowSorting="True" 
    AutoGenerateColumns="False"
    SelectMethod="LoadSomeData"
>
<Columns>
    ...
</Columns>
</asp:GridView>
标记:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    TypeName="YourDataSource"
    SelectMethod="LoadSomeData" 
/>
<asp:GridView ID="GridView1" runat="server" 
    AllowSorting="True" 
    AutoGenerateColumns="False"
    SelectMethod="LoadSomeData"
>
<Columns>
    ...
</Columns>
</asp:GridView>

...

您在datatable中的列的实际名称是column1和column2吗?不是,但我只是把它作为一个示例,在这里发布代码-它们在实际datatable中的调用方式不同。我刚刚尝试使用您在ObjectDataSource中使用的方式,但仍然得到相同的错误。我还尝试了模型绑定选项,但出现了以下错误:初始化字符串的格式不符合从索引0开始的规范。我的连接字符串如下所示:using(SqlConnection conn=new SqlConnection(“TestConnectionString”))。你能看出它有什么毛病吗?谢谢你的帮助,非常感谢@用户:字符串
“TestConnectionString”
无效。你打算从
web.config
文件中加载连接字符串吗?是的,但我已经对它进行了排序,所以现在一切正常。谢谢你的帮助!