2016-03-27 12 views
0

添付の希望出力(レコード)) 今はレコードの列に複数のリンクを追加できますが、背後にあるコードから私はGetRecordLinksを呼び出すことで、動的にイメージボタンを作成しようとしました enter image description here コマンド引数は、(エバール(「レコード」)) `、下記の私は追加したいListView Command name、Visible、CommandArgumentを含む画像ボタンを動的に呼び出すことで、画像を追加するボタンを追加します。

<asp:ListView ID="Student" runat="server" OnItemCommand="Student_ItemCommand" OnItemDeleting="Student_ItemDeleting" OnItemDataBound="Student_OnItemDataBound"> 
     <LayoutTemplate> 
      <table class="DataGrid"> 
       <tr class="HeaderRow">            
        <td style="width: 150px;">Name</td> 
        <td style="width: 200px;">Class(s)</td> 
        <td style="width: 150px;">Sex</td> 
        <td style="width: 200px;">Recordss</td> 
        <td style="width: 150px;">Status</td> 
        <td style="width: 30px; text-align: center;">Activate/Delete</td>             
       </tr> 
       <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> 
      </table> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr>      
       <td> 
        <b><%# Eval("StudentLastName") %>, <%# Eval("StudentFirstName") %> <%# Eval("StudentMiddleName") %></b>       
       </td> 
       <td>       
        <%# JoinStringList(Eval("class")) %> 
       </td> 
       <td> <%# Eval("sex") %></td> 
       <td> 
        <%# GetRecordLinks(Eval("Records")) %>       
       </td>     
       <td> 
        <%# Eval("StatusID").ToString()=="0"?"Inactive":"Active" %> 
       </td> 
       <td style="text-align: center;">       

        <asp:ImageButton ImageUrl="img/Refresh.png" ID="StudentActive" runat="server" CommandName="Active" Visible='<%#Eval("StatusID").ToString()=="0"?true:false%>' CommandArgument='<%# Eval("StudentGUID") %>' />                 
        <asp:ImageButton ImageUrl="img/delete.png" ID="StudentDelete" runat="server" CommandName="Delete" Visible='<%#Eval("StatusID").ToString()=="0"?false:true%>' CommandArgument='<%# Eval("StudentGUID") %>' />             
       </td> 
      </tr> 
     </ItemTemplate> 
    </asp:ListView> 

GetRecordLinks方法

下に私のコードですasp:ImageB uttonには CommandNameVisibleCommandArgumentの生徒がいます。 eaxmpleの場合、生徒Aがセルに5つのレコードを5つずつ持っている場合は、iteamコマンドで5つのimagebuttonを持つ必要があります。

public string GetRecordLinks(object obj) 
    { 
     if (obj != null) 
     { 
      List<AppointmentDoc> docs = (List<AppointmentDoc>)obj; 
      StringBuilder sb = new StringBuilder();            
      foreach (AppointmentDoc rec in docs) 
      {      
       sb.Append("<a target='_blank' href=\"result.ashx?uuid=" + rec.UUID.ToString() + "\">" + rec.Name.Replace("student", "").Trim() + " (" + rec.SignedBy + ")" + (rec.staffSigned ? "*" : "") + "</a><br/>"); 
      } 
      return sb.ToString(); 
     } 
     return ""; 
} 

希望が任意のクエリ

おかげ

答えて

0

は、プレースホルダを使用して、それにあなたのImageButtonsを追加することができれば、私に知らせて 私の質問を理解しています。まず、交換してください:

<td> 
    <%# GetRecordLinks(Eval("Records")) %>       
</td> 

で:

<td> 
    <asp:PlaceHolder ID="phRecords" runat="server" /> 
</td> 

を次にコードビハインドで:単一のボタンを追加します

void Student_OnItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    ... 
    PlaceHolder phRecords = e.Item.FindControl("phRecords") as PlaceHolder; 
    ImageButton imgButton = new ImageButton(); 
    // Set the ImageButton properties here 
    ph.Controls.Add(imgButton); 
} 

。ループ内にImageButton作成コードを配置して、同じセルに複数のコードを追加することができます。

また、すべてのポストバックでこれらのImageButtonを再作成する必要があるため、Page_Loadメソッドでデータをバインドする必要があります。

+0

ありがとうConnors ...あなたが言ったようにPlacehHolderを使用し、リンクと画像ボタンを動的に作成しました。リストビューをリピーターに変更しました...しかし、私は今、問題を抱えています。ポストバックでバインドされた同じメソッド..まだ動作していません – appu

+0

ImageButtonの 'ListView'を保持し、' CommandName'(そして必要に応じて 'CommandArgument')を設定できますか?それは 'ItemCommand'イベントを引き起こすはずです。 – ConnorsFan

+0

ありがとう...私はitemdataboundとiteamcreatedを使用して、すべてのボタンをrepaeterで動的に作成しました。 – appu

関連する問題