C# 错误:找不到ObjectDataSource的TypeName属性中指定的类型
我有一个带有Sql连接的Datatable,正在尝试将其绑定到GridView,但是我得到一个错误,无法找到TypeName属性中指定的类型。 我的datatable代码如下所示: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
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
文件中加载连接字符串吗?是的,但我已经对它进行了排序,所以现在一切正常。谢谢你的帮助!