【问题标题】:How to refer SqlDataSource to GridView control, when SqlDataSource is created in code-behind?在代码隐藏中创建 SqlDataSource 时,如何将 SqlDataSource 引用到 GridView 控件?
【发布时间】:2017-10-29 15:15:06
【问题描述】:
在我的aspx页面中:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
</asp:GridView>
在代码隐藏页面中:
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager
.AppSettings["MyConnectionString"];
SqlDataSource1.SelectCommand = "SELECT * FROM my_table_name";
this.Controls.Add(SqlDataSource1);
}
这会引发服务器错误:
“GridView1”的 DataSourceID 必须是 IDataSource 类型的控件的 ID。找不到 ID 为“SqlDataSource1”的控件。
【问题讨论】:
标签:
c#
asp.net
gridview
webforms
sqldatasource
【解决方案1】:
我认为命名 sqlDataSource 等于设置它的 ID,它不是。我必须明确设置SqlDataSource.ID = "SqlDataSource";
【解决方案2】:
从 aspx 中删除数据源 id
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
通过代码实现
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager
.AppSettings["MyConnectionString"];
SqlDataSource1.ID = "SqlDataSource1";
this.Page.Controls.Add(SqlDataSource1);
SqlDataSource1.SelectCommand = "SELECT * FROM my_table_name";
GridView1.DataSource = SqlDataSource1;
GridView1.DataBind();
}