我正在尝试将ObjectDataSource用于多个DropDownList,但所有这些都不在一个ContentPlaceHolder中。所以代码正在编译,但我得到了这个例外:
An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code
Additional information: The DataSourceID of 'DROPDOWNLIST_NAME' must be the ID of a control of type IDataSource. A control with ID 'OBJECTDATASOURCE_NAME' could not be found.
显然我无法将它们全部移动到一个地方,我也不打算复制ObjectDataSource!
答案 0 :(得分:1)
您应该在另一个ContentPlaceHolder中使用控件的DataSourceID的特殊格式(在我的情况下,DropDownList不在ObjectDataSource的相同ContentPlaceHolder中)。
假设具有ObjectDataSource的ContentPlaceHolder是 CPH 而ObjectDataSource Id是 OBJDS ,那么绑定控件的DataSourceId应该是这样的:
<强>的DataSourceID = “CPH $ OBJDS”强>
答案 1 :(得分:0)
我建议不要使用ObjectDataSource并手动填充下拉列表控件。因此,您可以划分业务逻辑和UI。 例如:
public void GetItems(ListControl list, bool emptyElement)
{
if (list == null)
return;
list.Items.Clear();
if (emptyElement)
list.Items.Add(new ListItem("Select", ""));
IList<MyClass> foos = Controller.LoadRecords();
foreach (MyClass foo in foos)
{
ListItem item = new ListItem(foo.Description, foo.Id.ToString());
list.Items.Add(item);
}
}
使用
调用Manager.GetItems(myDropDownList, true);