0

基本的に、部門テーブルにデータを入力しようとしており、変更日などに基づいて、特定の日付範囲内にある部門のボタンを作成します。問題は、ボタンが作成されますが、データがないことです。

ここに私がこれまでに持っているものがあります-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;
                }

            }
        }
4

1 に答える 1

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

上記のコードに問題があると思います。最初のものをボタンにキャストし、2番目のものをテキストボックス(またはそれが何であれ、リピーターではないことは確かです)にキャストする必要があります。ここで無効なキャスト例外のためにonitemdataboundを追加すると、データが消える可能性があります

RepeaterItem item = e.Item;

上記のコードを削除し、代わりに次を使用します。

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

それでもうまくいかない場合は、page_Load コードを投稿できますか?

于 2012-08-14T11:55:03.200 に答える