【问题标题】:change templatefield column location in gridview在gridview中更改模板字段列位置
【发布时间】:2012-03-20 07:19:51
【问题描述】:

我有一个网格视图,我在其中设置了一个模板字段。 另外我在后面的代码中动态设置了一个数据源。 现在模板字段显示为第一列,我想将它移动到第 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>

【问题讨论】:

    标签: asp.net gridview templatefield


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      在用户名前添加 4 个空模板字段并将其 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>
      

      【讨论】:

        【解决方案3】:

        试试这个:

        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());
                }
        

        【讨论】:

        • 那里的解释没有说明如何将模板字段列移动到数据库字段之间,仅在之前或之后。
        猜你喜欢
        • 2015-01-14
        • 1970-01-01
        • 1970-01-01
        • 2015-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多