2010-08-12 51 views
1

呈現數據綁定ListView時,我想根據結果動態設置每行的背景顏色(在本例中爲紅色,橙色和綠色)。在itemCreated事件中由ListView創建的行的更改樣式

 protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e) 
    { 
     DataRow myRow; 
     DataRowView myRowView; 
     myRowView = (DataRowView)e.Item.DataItem; 
     myRow = myRowView.Row; 

     if (myRow[2].ToString().CompareTo("") == 1) 
     { 
      // Colour coding here..  
     } 

    } 

是否有可能達到TR標籤的每一行來改變風格?

非常感謝, 斯特凡

回答

0

我找出瞭解決方案,我的問題,從布賴恩一些很好的幫助。

我有一個ListView和我添加了一個ID標籤(trRow)和標籤RUNAT = 「服務器」 是這樣的:

<AlternatingItemTemplate> 
      <tr id="trRow" runat="server" style="background-color:#FFF8DC;"> 

在後面的代碼看起來是這樣的:

 protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e) 
    { 
     DataRow myRow; 
     DataRowView myRowView; 
     myRowView = (DataRowView)e.Item.DataItem; 
     myRow = myRowView.Row; 

     System.Web.UI.HtmlControls.HtmlTableRow myTR = (System.Web.UI.HtmlControls.HtmlTableRow)e.Item.FindControl("trRow"); 

     if (myRow[2].ToString().CompareTo("") == 1) 
     { 
      myTR.Style.Value = "background-color:#FF0000;color: #000000;"; 
     } else 
      myTR.Style.Value = "background-color:#00FF00;color: #000000;"; 

    } 

一些的邏輯還是不正確的,只是爲了說明我是如何解決問題的,以動態改變每一行的背景顏色。

1

tr標籤就必須有RUNAT =「服務器」使用服務器端代碼;但是,您也許可以通過檢查作爲項目子項的控件來注入它;有可能是一個文字或LiteralControl與HTML,你可以使用字符串操作注入...

+0

嗨,你的意思是通過在ItemCreated事件中使用發件人或ListViewItemEventArgs?不是100%確定你在這裏提出的建議。 //謝謝 – StefanE 2010-08-12 12:47:52

+0

如果你使用服務器端TR,使用e.Item.FindControl(「trid」);否則,我不是100%確定的,但我認爲e.Item有一個Controls集合,您可以循環查找要注入的標記的文字。 – 2010-08-12 14:03:58

相關問題