2017-02-12 2 views
0

Kannst du mir sagen, wie man zu jeder Zelle ein div in jedem td generiert?Wie zu jeder Zelle in einem ASP-GridView einen DIV-Wrapper hinzufügen?

<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> 

Ich brauche, dass jedes Mal, wenn die Gitter seiner Tabelle erzeugen in HTML jeweils td Inhalt in einem div Element sein wrappped wird. Auf den ersten Blick sollte etwas leicht sein, obwohl ich nicht weiß, wie es geht. Ich habe es mit ItemTemplate versucht, scheint aber keinen Unterschied zu machen.

Antwort

1

Sie können dies in der ItemTemplate tun.

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

Das div-Element muss nicht die runat="server" funktionieren.

UPDATE

Wenn Sie Automatisch erzeugt Spalten verwenden, können Sie die RowDataBound Ereignis verwenden, um die <div> hinzuzufügen.

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

der Punkt ist, dass das GridView dynamisch verwendet wird - also weiß ich nicht Spalte, die gebunden werden wird. Was ich getan habe, war an das Ereignis gridView_RowDataBound anzuhängen und innerhalb dieses Ereignisses habe ich auf e.Row.Cells iteriert und seine Text-Eigenschaft geändert. Danke für Ihre Antwort. –

+0

Ich habe meine Antwort aktualisiert. – VDWWD

+0

ja - das war's;) –

Verwandte Themen