2009-08-28 14 views
0

私は "lvQuestions"というラベルのリストビュー(lblMissingField)と他のいくつかのフィールドを持っています。ユーザーがページをポストバックしようとすると、最初にALL lvlMissingField.Text = string.emptyを設定し、ListViewDataItemの「other」フィールドが満たされていることを検証するルーチンを呼び出します。それらが満たされていない場合は、特定のリストビューのlvlMissingField.Text = "*"を視覚的にそれらに "*"を付けてください(注:標準のasp.netバリデータは使用されません)。ListViewDataItem設定プロパティのラベルはすべてのラベルに影響を与えます

だからどうしますか?すべてのlblMissingField.Visibleが表示されますが、私はここで何が欠けていますか?

foreach(ListViewDataItem question in unansweredQuestions) 
{ 
    ((Label)question.FindControl("lblMissingField")).Text = "*"; 
} 

私は... unansweredQuestionsは私が欲しいものだけListViewDataItemsであることを行った、とまだHTMLは「*」にそれらのすべてを設定し、出力を確認して驚いていますか?

私はまた、テキストを '*'(これは私の元々の好みだった)に設定する代わりに、Visible = trueを試しました。ここで少し怒っゴーイング

は...

私はあなたが何をしているかと更新/チェックが行われたサーバー側と同様の機能を行うために必要なている

答えて

0

、私は私がしたい各コントロールのデータバインディングメソッドを実装していますカスタマイズする。何かが変わったら、変更する必要があるビットとピースを更新してモデルに再バインドします。あなたのケースでは例えばので

は、以下の詳細を持っていること(DataTableのか、何でもすることができる)私はオブジェクトのリストにバインドしていますと仮定します。

public class MyData 
{ 
    public string Question { get; set; } 
    public string Answer { get; set; } 
} 
public List<MyData> listOfMyData = GetListOfMyData(); 

次にラベル上の私のデータバインディングイベントが

を実施されますその後
<asp:Label ID="lblMissingField" runat="server" OnDataBinding="lblMissingField_DataBinding" /> 

データバインディングの実装:

protected void lblMissingField_DataBinding(object sender, System.EventArgs e) 
{ 
    Label lbl = (Label)(sender); 
    lbl.Text = (Eval("Answer").ToString() == string.Empty) ? "*" : string.Empty; 
} 

これはあなたのテンプレートのすべての単一の項目の多くのコントロールを提供します。データがロードされた後、すべてのコントロールを処理するのではなく、データがバインドされるときにデータを変更することができます。

あなたの正確な質問には解決策ではありませんが、問題に近づく別の方法を提案することができます。

+0

ありがとうございます!私は似たようなものを実装しました。本当にうまく動作します。私は問題が何であるかを把握しようとすると何時間も試してみた。それは意味をなさない。 – MrFishy

関連する問題