Вы можете создать свойство в пользовательском элементе управления для показа свойства в скрытом поле следующим образом:
public int AlbumID
{
get { return Convert.ToInt32(txtAlbumID.Value); }
set { txtAlbumID.Value = value.ToString(); }
}
После этого вы сможете подключить источник данных объекта к пользовательскому элементу управления:
<asp:ControlParameter Name="albumID" ControlID="myUserControl" PropertyName="AlbumID" Type="Int32"/>
Редактировать:
Есть несколько способов обойти наоборот (например, источник данных в пользовательском элементе управления).Один из подходов является жизнеспособным, но я нахожу в нем некоторую путаницу, связанную с тем, что дизайнер представляет коллекцию параметров из пользовательского элемента управления как открытое свойство:
public ParameterCollection SelectParameters
{
get { return ObjectDataSource1.SelectParameters; }
}
Это позволяет заполнить коллекцию параметров со страницы.например так:
<my:UserControl runat="server" ID="myUserControl">
<SelectParameters>
<%-- ... --%>
</SelectParameters>
</my:UserControl>
Если вы используете конструктор, ваш элемент управления всегда будет отображать ошибку, но она работает.(Обратите внимание, что я использовал этот подход со строкой запроса и параметрами сеанса. Было бы интересно посмотреть, сохранится ли он в параметрах управления.)
Однако я думаю, что самый простой способ - это обменControlParameter
для простого старого Parameter
и выставьте значение по умолчанию через свойство.
public int AlbumID
{
get { return Convert.ToInt32(ObjectDataSource1.Parameters[0].DefaultValue); }
set { ObjectDataSource1.Parameters[0].DefaultValue = value.ToString(); }
}
Затем можно привязать данные или напрямую назначить свойству AlbumID элемента управления и ожидать значениядля пересылки в параметр.