【问题标题】:GridView columns header textGridView 列标题文本
【发布时间】:2013-07-05 20:20:06
【问题描述】:

我有这个 GridView:

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" 
        AllowPaging="True" PageSize="20" CellPadding="4" ForeColor="#333333" GridLines="None">
        <AlternatingRowStyle BackColor="White" />
        <EditRowStyle BackColor="#2461BF" />
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        <RowStyle BackColor="#EFF3FB" />
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        <SortedAscendingCellStyle BackColor="#F5F7FB" />
        <SortedAscendingHeaderStyle BackColor="#6D95E1" />
        <SortedDescendingCellStyle BackColor="#E9EBEF" />
        <SortedDescendingHeaderStyle BackColor="#4870BE" />

    </asp:GridView>

这个ID是SqlDataSource1

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:connectionString %>" 
                ProviderName="<%$ ConnectionStrings:connectionString.ProviderName %>" 
                SelectCommand="SELECT count(city),city FROM users GROUP by city ORDER BY count(city) DESC;" ></asp:SqlDataSource>

GridView 中,列的标题是count(city),city

我应该如何更改列名?

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    将您的 SQL 更改为:

    SelectCommand = "SELECT count(city) As CityCount, city FROM users ..."
    

    因此,使用 ALIAS 将标头重命名为 CityCount

    为了获得更大的灵活性,请禁用从 Gridview 自动生成列并手动指定它:AutoGenerateColumns="False"

    <asp:GridView AutoGenerateColumns="False" ID="GridView1" runat="server" 
        DataSourceID="SqlDataSource1" AllowPaging="True" PageSize="20" 
        CellPadding="4" ForeColor="#333333" GridLines="None">
        <asp:BoundField DataField="CityCount" HeaderText="Number of Cities" />
    </asp:GridView>
    

    【讨论】:

      【解决方案2】:

      您可以更改您的 Sql select query 在他的回答中使用别名作为 codingbiz 提及

      代码:动态设置headertext

      GridView1.Columns[ColumnIndex].HeaderText = "Header text";
      

      【讨论】:

        【解决方案3】:

        试试这个

            <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AllowPaging="True"
            PageSize="20" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="false"><%--add attribute AutoGenerateColumns="false" --%>
            <AlternatingRowStyle BackColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#EFF3FB" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#F5F7FB" />
            <SortedAscendingHeaderStyle BackColor="#6D95E1" />
            <SortedDescendingCellStyle BackColor="#E9EBEF" />
            <SortedDescendingHeaderStyle BackColor="#4870BE" />
            <Columns>
            <asp:BoundField HeaderText="Total" DataField="City_Total" />
            <asp:BoundField HeaderText="City" DataField="City" /> <%--Header  Text => Whatever you want to display as name ;DataField=> name of field--%>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:connectionString %>"
            ProviderName="<%$ ConnectionStrings:connectionString.ProviderName %>" SelectCommand="SELECT count(city) as City_Total,city FROM users GROUP by city ORDER BY count(city) DESC;">
        </asp:SqlDataSource>
        

        【讨论】:

          【解决方案4】:

          把你的sql查询改成下面的

          SELECT count(city) As CityCount, city FROM users GROUP by city ORDER BY count(city) DESC;"
          

          然后在网格视图中添加绑定字段,并将标题文本设置为您想要的任何内容

          <Columns>
              <asp:BoundField DataField="CityCount" HeaderText="City Count" 
                                                          SortExpression="CityCount" /> 
              <asp:BoundField DataField="city" HeaderText="City " 
                                                          SortExpression="city" /> 
          </Columns>
          

          【讨论】:

            【解决方案5】:

            您应该像这样更改查询

            SELECT count(city) AS CityCount, city FROM users GROUP by city ORDER BY count(city) DESC;
            

            【讨论】:

              【解决方案6】:

              您可以更改您的 SQL

                CMD="SELECT Count(City) As Count_City, etc,... FROM [Tbl_Name]
              

              【讨论】:

                【解决方案7】:

                从我看到的地方,你可以通过 2 种方式做到这一点:

                1) 更新您的 SQL 查询:

                SELECT count(city) as CityCount,city as CityName FROM users GROUP by city ORDER BY count(city) DESC;
                

                2) 使用 gridview 的“TemplateField”或BoundField 功能(然后定义自己的列):

                <asp:TemplateField HeaderText="Discount" HeaderText="City Count" >
                    <ItemTemplate>   
                        <asp:Literal ID="CityCount" runat="server" Text='<%# Eval("CityCount").ToString() %>'></asp:Literal>
                  </ItemTemplate>                     
                </asp:TemplateField> 
                

                在这种情况下,不要忘记将以下属性添加到您的网格视图中,否则您将有重复的列...:

                AutoGenerateColumns="false"
                

                【讨论】:

                  猜你喜欢
                  • 2012-10-12
                  • 2014-04-17
                  • 1970-01-01
                  • 2011-07-25
                  • 2013-07-30
                  • 1970-01-01
                  • 2011-12-29
                  • 2014-08-24
                  • 1970-01-01
                  相关资源
                  最近更新 更多