2017-02-12 17 views
0

生成された各td内のdivを各セルに追加する方法を教えてもらえますか?どのようにasp GridViewの各セルにdivラッパーを追加するには?

<asp:GridView ID="XDataGridView" 
     CssClass="XDataGridView" 
     ClientIDMode="Static" 
     AllowPaging="True" 
     AllowSorting="True" 
     OnSorting="XDataGridView_Sorting" 
     OnPageIndexChanging="XDataGridView_PageIndexChanging" 
     Font-Size="Smaller" 
     runat="server" 
     EnablePersistedSelection="True" 
     OnRowDataBound="XDataGridView_RowDataBound" 
     OnRowCreated="XDataGridView_RowCreated" 
     SelectedRowStyle-BackColor="#FF7900" 
     meta:resourcekey="XDataGridViewResource1"> 
     <HeaderStyle CssClass="XDataGridViewHeader" BackColor="DimGray" 
      BorderColor="#FF7900" HorizontalAlign="Center" VerticalAlign="Middle" Font-Size="10" Height="34" /> 
     <PagerSettings Visible="false" /> 
     <RowStyle BorderColor="#FF7900" Height="34" Font-Size="10" /> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <div id="insideDiv" runat="server"></div> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

グリッドがhtmlで表を生成するたびに、各TDコンテンツがdiv要素にラップされる必要があります。私はどうやってやるのか分かりませんが、一目見ては何か簡単なはずです。私はItemTemplateを試してみましたが、違いはありません。

答えて

1

ItemTemplateでこれを行うことができます。

<ItemTemplate> 
    <div><%# Eval("columnA") %></div> 
</ItemTemplate> 

div要素にはrunat="server"が機能する必要はありません。

UPDATE

あなたが自動生成された列を使用する場合は、<div>を追加するためにRowDataBoundイベントを使用することができます。

protected void XDataGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    //check if the row is a datarow 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //loop all the cells in the row 
     for (int i = 0; i < e.Row.Cells.Count; i++) 
     { 
      e.Row.Cells[i].Text = "<div>" + e.Row.Cells[i].Text + "</div>"; 
     } 
    } 
} 
+0

ポイントは、GridViewが動的に使用されているため、バインドされる列がわかりません。 私がしたことは、gridView_RowDataBoundイベントにアタッチし、そのイベントの中でe.Row.Cellsを反復してTextプロパティを変更したことです。 ご返信ありがとうございます。 –

+0

私は自分の答えを更新しました。 – VDWWD

+0

はい - それでした;) –

関連する問題