2017-02-12 5 views
0

Можете ли вы рассказать мне, как добавить в каждую ячейку div внутри каждого td?Как добавить в каждую ячейку в 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 будет wrappped в сНу элемента. На первый взгляд должно быть что-то легкое, хотя я не знаю, как это сделать. Я пробовал с ItemTemplate, но, похоже, не имеет никакого значения.

ответ

1

Вы можете сделать это в ItemTemplate.

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

Элемент div не нуждается в функции runat="server".

UPDATE

Если вы используете автогенерируемые столбцы, вы можете использовать событие RowDataBound добавить <div>.

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

да - это было;) –