2012-08-14 7 views
0

基本上,我試圖填充部門表並基於(比如說更改日期)爲某個日期範圍內的任何部門創建按鈕。問題是,該按鈕創建,但沒有數據,c#asp當使用ItemDataBound創建基於字段的按鈕時,Repeater數據不會顯示

繼承人是我迄今爲止 - 我的onPageLoad綁定,所有的作品和顯示,直到我嘗試的ItemDataBound

ASP.net

<asp:Repeater ID="DepartmentsList" runat="server" OnItemDataBound="DepartmentsList_ItemDataBound"/> 
<HeaderTemplate> 
    <table id="grouptable" class="table table-bordered table-striped"> 
     <thead> 
       <tr> 
      <th>Send</th> 
      <th>ID</th> 
      <th>Name</th> 
      <th>Last Modified</th> 
      <th>Actions</th> 
      </tr> 
      </thead> 
      <tbody> 
</HeaderTemplate> 
<ItemTemplate> 
       <tr> 
        <td> 
        <input type="checkbox" name="SendSelect[]" value="<%# Eval("Dept_ID") %>"</input></td> 
        <td><%# Eval("Dept_ID") %></td> 
        <td><a href="<%# Eval("gURL") %>"><%# Eval("DESC") %></a> </td> 
        <td><asp:Label ID="chg_date" runat="server" Text='<%# Eval("chg_date") %>'></asp:Label></td> 
        <td><a class="btn btn-info" href="<%# Eval("gURL") %>"><i class="icon-pencil icon-white"></i> Edit </a>&nbsp;&nbsp<asp:Button ID="bcastBtn" runat="server" Text="Send Now" CssClass="btn btn-danger" /> </td> 
       </tr> 
</ItemTemplate> 
<FooterTemplate> 
     </tbody> 
     </table> 
</FooterTemplate> 
</asp:Repeater> 
數據源

C#代碼

protected void DepartmentsList_ItemDataBound(object sender, RepeaterItemEventArgs e) 
     { 
      RepeaterItem item = e.Item; 
      if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) 
      { 
       return; 
      } 
      else 
      { 
       Repeater bcastbuttonControl = (Repeater)item.FindControl("bcastBtn"); 
       Repeater DepartmentsList = (Repeater)item.FindControl("chg_date"); 

       //Coding for date validation to go here - at the minute just checking based on empty or null 
       if (String.IsNullOrEmpty(chg_date.Text)) 
       { 
        bcastBtn.Visible = false; 

       } 
       else 
       { 
        bcastBtn.Visible = true; 
       } 

      } 
     } 

回答

2
Repeater bcastbuttonControl = (Repeater)item.FindControl("bcastBtn"); 
Repeater DepartmentsList = (Repeater)item.FindControl("chg_date"); 

我覺得有與上面的代碼有問題。你應該將第一個投射到一個按鈕上,第二個投射到一個文本框(或任何它的控制權,但它肯定不是中繼器),當你添加onitemdatabound時,你的數據可能會失去效果,因爲這裏的投影例外無效

RepeaterItem item = e.Item; 

去掉上面的代碼,而是簡單地使用:

Label chg_date = (Label)e.Item.FindControl("chg_date"); 

,如果不是你可以發表你的Page_Load代碼不起作用?

+0

我同意代碼可能是不正確的,但我會認爲這樣會引發一個可見的異常,而不是吞下一個。 – mclark1129 2012-08-14 11:58:03

+0

嘗試對Button進行更改bcastbuttonControl =(Button)item.FindControl(「bcastBtn」); Label DepartmentsList =(Label)item.FindControl(「chg_date」);並沒有什麼區別 - 它幾乎就好像它沒有看到數據集的所有 – JazziJeff 2012-08-14 12:01:56

+0

你能做出我剛剛發佈的更改嗎? – 2012-08-14 12:08:47

相關問題