2009-08-28 84 views
0

我有一個名爲「lvQuestions」列表視圖,其上有一個標籤(稱爲lblMissingField)和一對夫婦等領域。當用戶試圖投遞的頁面,我叫一個例程,第一組所有lvlMissingField.Text = string.empty,然後驗證,在ListViewDataItem「其他」領域已經排滿。如果他們沒有被填滿我設置了特定的ListView的lvlMissingField.Text = "*"直觀地用「*」標記它們(注意:不使用標準的asp.net驗證器)。標籤在ListViewDataItem設置屬性會影響所有標籤

那麼,會發生什麼?顯示每個lblMissingField.Visible,我在這裏丟失了什麼?

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

我所做的unansweredQuestions只是,我希望這些ListViewDataItems,仍然很驚訝看到輸出HTML將所有的人都爲「*」 ......?

我也試着設置Visible = true,而不是沒有任何的運氣文本設置爲「*」(這是我原來的偏好)。

去這裏有點瘋狂...

回答

0

當我需要做類似於你在做什麼,並更新/支票進行服務器端的功能,我已經實現了我希望每個控件的數據綁定的方法自定義。當某些事情發生變化時,我會重新更新我的模型,並更新需要更改的零部件。

因此,例如,你的情況假設我綁定到對象的列表(可以是數據表或其他)具有以下細節:

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 2009-08-31 03:38:56