2012-03-20 12 views
0

私はグリッドビューを持っており、テンプレートフィールドを設定しています。 さらに、データソースをコードの中で動的に設定します。 今、テンプレートフィールドが最初の列として表示され、5行目に移動したいので、別の列を無効にします。 どうすればいいですか?グリッドビューのテンプレートフィールドの列の位置を変更します

   <asp:GridView ID="gv_DisAlarms" runat="server" BackColor="#DEBA84" BorderColor="#DEBA84" 
      BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" PageSize="15" 
      AllowSorting="True" OnSorting="dataGrid_Sorting" 
      EnableModelValidation="True" AutoGenerateColumns="true"> 
      <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" /> 
      <Columns> 
       <asp:TemplateField HeaderText="Username" HeaderStyle-HorizontalAlign="Left" > 
        <ItemTemplate> 
         <asp:HyperLink ID="hl_mailto" runat="server" Text='<%# Bind("Username") %>' NavigateUrl='<%# "mailto:" + Eval("Username") + "?subject=Disabled Alarms&body=Dear " + Eval("Username") + ".%0AIn " + Eval("LastEditDate") + " you put alarm " + Eval("PointID") + " in disable.%0APlease clarify the reason and when it will be enabled.%0AThanks." %>' /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
      <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" /> 
      <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> 
      <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" /> 
      <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" /> 
     </asp:GridView> 

答えて

0

ユーザー名の前に4つの空のテンプレートフィールドを追加し、無効にthier CSSを設定:TemplateFieldタグ内ItemStyleタグのCssClassプロパティを使用して無効。

  <Columns> 
      <asp:TemplateField HeaderText="Username" HeaderStyle-HorizontalAlign="Left" > 
       <ItemStyle CssClass="colDisable" /> 
       <ItemTemplate> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Username" HeaderStyle-HorizontalAlign="Left" > 
       <ItemStyle CssClass="colDisable" /> 
       <ItemTemplate> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Username" HeaderStyle-HorizontalAlign="Left" > 
       <ItemStyle CssClass="colDisable" /> 
       <ItemTemplate> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Username" HeaderStyle-HorizontalAlign="Left" > 
       <ItemStyle CssClass="colDisable" /> 
       <ItemTemplate> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
0

これを試してみてください:

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
     { 
     GridViewRow row = e.Row; 
     List<TableCell> columns = new List<TableCell>(); 
     foreach (DataControlField column in GridView1.Columns) 
     { 
      TableCell cell = row.Cells[0]; 
      row.Cells.Remove(cell); 
      columns.Add(cell); 
     } 
     row.Cells.AddRange(columns.ToArray()); 
     } 
+0

説明だけ前または後に、データベースフィールドの間になるように列をtemplatefield移動する方法がわかりません。 – Aviadjo

1
Protected Sub gvEdit_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvEdit.RowCreated 
    Dim row As GridViewRow = e.Row 
    Dim columns As New List(Of TableCell)() 

    For Each column As DataControlField In gvEdit.Columns 
     'Get the first Cell /Column 
     Dim cell As TableCell = row.Cells(1) 
     ' Then Remove it after 
     row.Cells.Remove(cell) 
     'And Add it to the List Collections 
     columns.Add(cell) 
    Next 

    ' Add cells 
    row.Cells.AddRange(columns.ToArray()) 

End Sub 
関連する問題