0

私の問題は、以前はこれができたということです。

< div runat="server" visible='<%#CallAFunctionThatReturnsBoolean() %>' >

コントロールの DataBind 関数が暗黙的に呼び出され、div の可視性が正しく設定されると、Page_Load で CallAFunctionThatReturnsBoolean() が呼び出されます。

何らかの理由でこれはもう発生しません。それを機能させるには、基本 Page クラスで Page.DataBind() を呼び出すか、そのページの Page_Load サブで Me.DataBind() を呼び出す必要がありますが、私はしません。特に基本 Page クラスでこれを実行したいのは、DataBind() 関数を明示的に呼び出している DataGrid を含むページがある場合、この DataGrid が Page から 1 回、2 回バインドされるためです。 DateBind と明示的な呼び出し datagrid.DataBind() から 1 回。

コントロールのデータ バインディング イベントが暗黙的に呼び出されなくなった理由は何ですか?

ありがとう

4

1 に答える 1

2

これ<%#は、データバインディングに<%=関係なく、ページが構築されているときに常に発生します。それがあなたが探しているもののように聞こえますか?

また、データバインディングはコントロールレベルであるため、グリッドを「DataBind」すると、他のコントロールにデータバインドされません。埋め込まれたテンプレート コントロールでさえ、配線しない限り、グリッドが呼び出されたときに自動的にデータ バインドされません。

次のことを試して、問題が解決するかどうかを確認してください。

<div runat="server" visible='<%= CallAFunctionThatReturnsBoolean() ? "true" : "false" %>' >

データバインディング イベントで発生させる必要がある場合は、次のように OnDataBinding サーバー側を実装することをお勧めします。

// in your aspx
<div runat="server" OnDataBinding="yourDiv_DataBinding">

// in your .cs
protected void yourDiv_DataBinding(object sender, EventArgs e)
{
    HtmlControl div = (HtmlControl)(sender);
    div.Visible = CallAFunctionThatReturnsBoolean();
}
于 2009-11-16T21:29:16.517 に答える