2012-05-06 26 views
4

我嘗試改變我的中繼器內的值:(通過ItemDataBound事件)更改中繼行的值?

如果年份是空的 - 設定值blabla

我轉發:

<ItemTemplate> 
       <tr > 
        <td > 
         <%#Eval("year") %> 
        </td> 

我的C#代碼:

void RPT_Bordereaux_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      if (string.IsNullOrEmpty(((DataRowView)e.Item.DataItem)["year"].ToString())) 
      { 
       (((DataRowView)e.Item.DataItem)["year"]) = "blabla"; // ??????? 

      } 
     } 

它確實改變了,但沒有顯示在中繼器上(顯示舊值)。

一個解決方案是增加一個或server controlliteral(RUNAT服務器)在itemTemplate - 在服務器並以「findControl」 - 和改變其值。

其他解決方案是通過jQuery - 搜索空的最後一個TD。

但 - 我的問題:

是否有任何其他服務器端溶液()?

回答

6

你可以嘗試這樣的事:

直放站的.aspx:

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
    <table> 
    <tr> 
      <td> <%# GetText(Container.DataItem) %></td> 
    </tr> 

    </table> 
    </ItemTemplate> 
</asp:Repeater> 

的.cs

protected static string GetText(object dataItem) 
{ 
    string year = Convert.ToString(DataBinder.Eval(dataItem, "year")); 
    if (!string.IsNullOrEmpty(year)) 
    { 
     return year; 
    } 
    else 
    { 
     return "blahblah"; 
    } 

} 

IN GetText方法可以能夠通過檢查字符串爲空或不是返回字符串。

+0

我傻,我怎麼沒想到它...... - 想我是太執着了datarowview類... –

+0

看看這裏:http://stackoverflow.com/questions/9820464/got-anyway-i-set-class-inside-repeater-datarow-find-by-data-id-when-do -postback。同樣的東西你想要的 – Jigs

+0

它是不一樣的 - 他只是讀不設置。 –

1

HTML文件

<asp:Repeater ID="RPT_Bordereaux" runat="server"> 
    <ItemTemplate> 
    <table> 
    <tr> 
      <td> <%# GetValue(Container.DataItem) %></td> 
    </tr> 

    </table> 
    </ItemTemplate> 
</asp:Repeater> 

.CS CODE

protected void RPT_Bordereaux_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
    } 
} 


protected static string GetValue(object dataItem) 
{ 
    string year = Convert.ToString(DataBinder.Eval(dataItem, "year")); 
    if (!string.IsNullOrEmpty(year)) 
    { 
     return Convert.ToString(year); 
    } 
    else 
      { 
       return "blahbla"; 
      } 

     } 

這應該工作