編集を参照してください。ユーザーコントロール内にあるGridViewコントロールの列コレクションを公開する方法
これは、ユーザーコントロールを消費する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サイトにコンパイルエラーがあるか、web.configファイルが見つからない場合に発生します。
私はタグの間にコンテンツを期待するようコンパイラに指示するために何らかの指示を使う必要があると思います。
アイデア?