2012-03-08 19 views
0

おそらく "doh"の瞬間ですが、このコードビハインド関数を起動することはできません。コードビハインド関数がaspxページから呼び出されていない

<table id="dnn_ctr422_ViewPloads_PagerTable">.... 

お知らせ欠落している「スタイル」:実際には、デバッグは1だけ見て、最終的にはWebページ上に表示されたときに示すことができた、それはさえ呼ばれていないを示しています。どんな助けでも大歓迎です。

//aspx code 
<table id="PagerTable" style="<%# GetPagerStyle() %>" runat="server"> 
    <tr> 
    <td> 
     <asp:DataPager ID="PloadPager" runat="server" PagedControlID="PloadListView" OnPreRender ="PloadPager_PreRender" PageSize="20" > 

//code behind  
protected String GetPagerStyle() 
    { 
     return "background-color:" + (String)Settings["TableBackgroundColor"]; 
    } 
+0

を試してみました。私はよくここで間違った構文を使用している可能性があります... – Gio

答えて

1

表示されていることから、なぜそれが実行されないのかは不明です。あなたのソースと同じではないバージョンに対して実行する可能性がありますが、完全な再構築を試したことを前提としています。

また、ASPXページでもブレークポイントを設定できることがわかっています。しかし、私の感覚は、これが呼び出されなければ、もっと呼び出されないということです。 Page_LoadまたはPage_PreRenderに侵入しようとしましたか?

PagerTableオブジェクトは、GetPagerStyleが呼び出される前に他のコードによって変更されている可能性があります。その場合、スタイル属性が実行される前に変更された場合、この問題が発生する可能性があります。あなたが実際にスタイルを設定することができるかどうかを調べるには、回避策とは、Page_Loadの中で次の操作を実行することです:

// correction courtesy of Tim Schmelter ;) 
PagerTable.Style.Add(HtmlTextWriterStyle.BackgroundColor, 
    (String)Settings["TableBackgroundColor"]); 

EDIT:他の人が指摘したように、次のようにも動作するはずです、注意は(と、それを試してみましたしかし

<table id="PagerTable" style="<%= GetPagerStyle() %>"> 

、ノート私はrunat="server"を削除:いくつかの論争が、他の回答を参照してください)がありました。つまり、コードビハインドからもう使用することはできません。私はちょうどあなたがコードビハインドでこのコントロールで他の何もしていないと仮定しているので、あなたの状況のた​​めにこれがうまくいくかどうかわかりません。

+0

はい他の関数は、デバッガでヒットされています(aspxのページには、このスニペットにはるかにあります)。私はちょうど正しい構文を使用していないと思う。 – Gio

1

<%#...はバインディング式なので、電話しましたか?それとは別に

inline asp.net tags... sorting them all out

、あなたは常に分離コードからこのようなものを設定することができます。

protected void Page_Load(object sender, EventArgs e) 
{ 
    PagerTable.Style.Add("background-color", (String)Settings["TableBackgroundColor"]); 
} 
+0

バインディング式を指摘していただきありがとうございます。これはおそらくOPが変更する必要があるものです。 – Abel

+0

これは技術的にバインディングではありません...次に、関数をどのように構造化するか、単にpage_loadメソッドを使うべきですか? – Gio

+1

@Gio:** **はバインディング式であり、暗黙のうちにデータバインドされたコントロールに対してのみ機能します。他のすべての場合、 'control.DataBind()'または単に 'Page.DataBind()'(もちろんcodebehindから)を呼び出す必要があります。すでにコードビハインドを使用しているので、コードビハインドの方が好きです。 guiとロジックをいっしょにしないでください。あなたの 'GetPagerStyle'アプローチは既にこのページで関数をハードリンクしていますが、コピー/ペースト以外はあまり再利用できません。 –

1

だけ

style="<%=GetPagerStyle()%>"が正常に動作する必要があり、あなたのコード内の=と#を交換してください。

+0

既に試してみましたが、ビュー内で

... – Gio

+1

@CanYener: '<%= %>'は短縮されています'Response.Write()'であり、任意のサーバータグの属性として有効ではありません。 –

+0

テーブルをコードの背後に置く必要がない場合は、runat属性を削除してもう一度やり直すことができます。テーブルにrunat = "server"属性があるので、あなたのメソッドはもうスクリプトレットではなく、 。 –

0

あなたはありませんがpage.databindを呼び出すことはありませんでした

<%= GetPagerStyle() %> 
+1

私はこれがうまくいくとは思わないが、 '<%= %>'は 'Response.Write()'の短縮形であり、任意のサーバータグの属性として有効ではない。 –

関連する問題