См. Редактировать.
Я хочу иметь возможность сделать это в aspx, который потребляет пользовательский элемент управления.
<uc:MyControl ID="MyGrid" runat="server">
<asp:BoundField DataField="FirstColumn" HeaderText="FirstColumn" />
<asp:BoundField DataField="SecondColumn" HeaderText="SecondColumn" />
</uc>
У меня есть этот код (который не работает). Есть идеи, что я делаю не так?
VB
Partial Public Class MyControl
Inherits UserControl
<System.Web.UI.IDReferenceProperty(GetType(DataControlFieldCollection))> _
Public Property Columns() As DataControlFieldCollection
Get
Return MyGridView.Columns
End Get
Set(ByVal value As DataControlFieldCollection)
' The Columns collection of the GridView is ReadOnly, so I rebuild it
MyGridView.Columns.Clear()
For Each c As DataControlField In value
MyGridView.Columns.Add(c)
Next
End Set
End Property
...
End Class
C #
public partial class MyControl : UserControl
{
[System.Web.UI.IDReferenceProperty(typeof(DataControlFieldCollection))]
public DataControlFieldCollection Columns {
get { return MyGridView.Columns; }
set {
MyGridView.Columns.Clear();
foreach (DataControlField c in value) {
MyGridView.Columns.Add(c);
}
}
}
...
}
EDIT:
На самом деле это работает, но автозаполнение не работает между открывающим и закрывающим тегами uc: MyControl, и я получаю предупреждения компилятора: -
Не допускается содержимое между открывающим и закрывающим тегами для элемента «MyControl».
Проверка (XHTML 1.0 Transitional): элемент 'columns' не поддерживается.
Элемент BoundField не является известным элементом. Это может произойти, если на веб-сайте произошла ошибка компиляции или отсутствует файл web.config.
Так что, думаю, мне нужно использовать какую-то директиву, чтобы сообщить компилятору, что он должен ожидать содержимое между тегами.
Есть идеи?