2012-05-11 30 views
3

コードビハインド関数を使用して設定するHeaderTextプロパティを持つTabPanelがあります。 例:サーバータグ内のaspxファイルのコードビハインド関数を呼び出す方法

<asp:TabPanel ID="id" runat="server" HeaderText='<%= String.Format("{0}","some text") %>'> 

それはタブパネルであるので、私は、開始タグと終了タグの間の関数呼び出しを置くことはできませんが、私は上記の操作を行うとき、私はちょうどページの空のヘッダーを取得します。私も<%#%>(2つの違いは分かりません)を試しました。

String.Formatは単なる例に過ぎず、実際に呼び出す関数ではありません。

+1

このコントロールをコードの背後から設定したくない理由はありますか?実行可能な場合はどこでもscript-letsを使用するのが一般に好ましい(ここではこれがそうである)。 – Servy

答えて

2

の背後にあるコードで

HeaderText='<%# TabPanel_HeaderText %>'

私はいくつかの属性がインライン構文をサポートしていません知っている、これは残念ながら、そのうちの一つかもしれません。構文は大丈夫だと思うので、それが当てはまると思います。この問題を回避するには、コードバックでHeaderTextを設定してください。 <%= ... %><%# ... %>との違いについては、後者はデータバインディングの構文については、厳密に使用されている

<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <%# Eval("SomeValue") %> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

EDIT

私が前に考えていなかったという簡単な方法は、実際にあります。 HeaderTemplateを使用して列ヘッダーテキストを動的に設定してください:

<Columns> 
    <asp:TemplateField> 
     <HeaderTemplate> 
      <%# Eval("SomeHeaderValue") %> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <%# Eval("SomeValue") %> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns>  
+0

ok、ありがとう、私は少し探していますが、何も表示されない場合は、それがサポートされていないことが正しいように見える私はこれを正しいと受け入れるよ – jas

+0

何かを見つけたら教えてください。それ以外の場合は、暫定的な受け入れのおかげで:) –

0

試してみてください。

protected string TabPanel_HeaderText 
{ 
    get { return String.Format("{0}","some text"); } 
} 
+0

これは、 'control.DataBind(); 'を呼び出す場合にのみ機能します。 – jrummell

+0

' <%= 'ならば、それがなくても動作しますか? –

+0

Jamesは答えで指摘したように、 '<%# ... %>'はデータバインディング構文です。 '<%= ... =>'は、基本的に '<%Response.Write(" ... ")%>'の短縮形です。したがって、 'HeaderText'に対してインラインコードブロックが許されている場合は、' <%= ... => 'で動作するはずです。 – jrummell

関連する問題