2016-10-14 2 views
1

私は自分自身のシミュレーションとテストに基づいてこの質問に対する回答をすでに持っていると思っていますが、私はこれをやりたいと思っています。私のページにはとても役に立つので、あなたが他の人のためにここにそれを投げ捨てて、誰かがこれまでにやるべきことを見つけられなかったことを達成するための実用的な方法を見つけたかどうかを見てみましょう。formveiwに埋め込まれたラベルを更新することは可能ですか?

シナリオ:
データ駆動型であり、フォーム内の希望に応じてフォーム内で操作できるデータ要素があります。

これで、静的なDDLを追加して、値を収集し、FormViewのフィールドの値を変更することができました。これはうまくいく。

私がこれに追加したいのは、<asp:Label>(データソースによって生成されなかった)を追加し、ドロップダウンリストで選択した値に基づいてそのラベルを変更することです。すなわち、これは選択されている値のための物語だろう。

問題:
私が発見したことは、私は私は私は1つのデータソースによって作成されたのと同じようにFormViewコントロールに挿入<asp:Label>を扱うことができないということです。私はDDLに対処してその値を引き出すことができるので、私にはびっくりしましたが、<FormView>の内部に作成した<asp:Label>にテキスト値を書き込むことができないようです。

それは本当に多くの助けにはなりませんが、ここで私は動作するはずと思ったけどなかったコードです:

// This line pulls the value that I want to place in the label 
Label astylbl = (Label)GetAssetTypeFV.Row.FindControl("AssetTypeLabel"); 

// This sequence should be setting the value collect above into the label 
// NOTE! That the Label has been prepopulated with data to make sure it isn't 

Label ATTL = (Label)GetAssetTypeFV.Row.FindControl("AssetTypeTextLabel"); 
    if (ATTL != null) 
     ATTL.Text = astylbl.Text; 

今これは単に不可能であるか、私はここで何かをしないのですが?

+0

AssetTypeTextLabelは別の場所で設定/インスタンス化されているため、フォーム提出のためにDDLから項目を選択するときにリセットされるか、またはajax呼び出しとして処理されますか? – Enfyve

+0

いいえ、そのインスタンスだけです。私はそれが役に立つとすればあなたのためにそれを流すことができます。 –

+0

追加コードを投稿する必要があります。どのイベントが一般的に発砲しているかを知る必要があります。 –

答えて

0

修正されたコードは次のようになります。

Label astylbl = (Label)GetAssetTypeFV.Row.FindControl("AssetTypeLabel"); 
Label ATTL = (Label)ChangeFormFV.Row.FindControl("AssetTypeTextLabel"); 
    if (ATTL != null) 
     ATTL.Text = astylbl.Text; 

すべてが今もです!

0

クライアント側(フォームの検証なし)にラベルを割り当てる場合は、使用しているクライアント側のスクリプト(javascript、jqueryなど)を使用してラベルを割り当てる必要があります。

それ以外の場合は、ターゲットDDLコントロールにAutoPostBack="True"を設定してDDLポストバックを行い、OnSelectedIndexChangedイベントで処理する必要があります。

編集: サーバー側で処理し、ページをリロードしない場合は、コードビハインドで[WebMethod]関数を作成し、AJAXを使用して呼び出す必要があります。

関連する問題