不能以声明方式设置“数据源”属性
本文关键字:数据源 属性 设置 声明 方式 不能 | 更新日期: 2023-09-27 17:57:19
我有以下代码抛出此错误,但我找到的解决方案说,"您是否尝试过 DataSourceID 而不是 DataSource?"没有指示应该对 DataSourceID 值使用什么。
<Columns>
<asp:BoundColumn DataField="id" SortExpression="id" HeaderText="ID" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
<asp:BoundColumn DataField="first_name" SortExpression="first_name" HeaderText="First" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
<asp:BoundColumn DataField="last_name" SortExpression="last_name" HeaderText="Last" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
<asp:BoundColumn DataField="login_pw" HeaderText="Password" ItemStyle-CssClass="dgCells"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Race">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "race_name") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="ddlRaces" DataValueField="race_id" DataTextField="race_name" >>>DataSourceID=""<<< />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Ok"></asp:EditCommandColumn>
</Columns>
我应该在数据源 ID=" 值中插入什么?
如果要从
SQL 数据库填充网格,则应将DataSourceID
设置为页面上继承自DatasourceControl
(如 SqlDatasource
)的控件的 ID
在网格视图中绑定下拉列表
protected void GV_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
var ddl = (DropDownList)item.FindControl("ddlRaces");
ddl.Datasource = GetRaces();
ddl.DataBind();
}
}
DataSourceID
将是页面上数据源元素的 ID,如 ObjectDataSource
或 SqlDataSource
。
从代码隐藏绑定到对象集合时,将使用 DataSource
属性。
对于快速和脏的应用程序,可以直接在 aspx 页上使用 da DataSourceControl。然后,可以将数据绑定控件的 DataSourceId
属性设置为此控件。对于较大的应用程序,不建议使用此技术,因为用户界面与业务或数据访问代码之间没有分离。
<asp:SqlDataSource
id="SqlDataSource1"
runat="server"
DataSourceMode="DataReader"
ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
SelectCommand="SELECT FirstName, LastName, Title FROM Employees">
</asp:SqlDataSource>
<asp:GridView
id="GridView1"
runat="server"
DataSourceID="SqlDataSource1">
</asp:GridView>
更好的方法是使用对象数据源,您可以在其中访问库中的任何 .net 类。
<asp:ObjectDatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetAllEmployees"
typename="Samples.AspNet.EmployeeLogic" />
第三个选项是使用 DataSource
属性,该属性主要在类后面的代码的Page_Load事件中设置。