C# GridView:隐藏标题上的排序箭头

C# GridView:隐藏标题上的排序箭头,c#,asp.net,gridview,C#,Asp.net,Gridview,我很难在不可排序的列标题上隐藏排序箭头。 我在HeaderTemplate部分清楚地定义了可排序列,在ItemTemplate中定义了不可排序列,但下面定义的第二个Template字段仍然显示排序箭头。我错过了什么 <asp:GridView ID="gvBeneficiary" runat="server" Width="100%" AllowPaging="True" CssClass="gridheader" EmptyDataText=""

我很难在不可排序的列标题上隐藏排序箭头。 我在HeaderTemplate部分清楚地定义了可排序列,在ItemTemplate中定义了不可排序列,但下面定义的第二个Template字段仍然显示排序箭头。我错过了什么

        <asp:GridView ID="gvBeneficiary" runat="server" Width="100%" AllowPaging="True" CssClass="gridheader"
            EmptyDataText=""
            AutoGenerateColumns="False" PageSize="10"
            OnPageIndexChanging="gvBeneficiary_PageIndexChanging" OnRowCommand="gvBeneficiary_RowCommand"
            OnRowDataBound="gvBeneficiary_RowDataBound" HeaderStyle-CssClass="lhs">
            <Columns>
                <asp:TemplateField HeaderStyle-CssClass="lhs">
                    <HeaderTemplate>
                        <asp:LinkButton ID="lnkFullName" Text="Full Name"
                            CommandName="Sort" CommandArgument="FullName" runat="server"></asp:LinkButton>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <%#Eval("FullName") %>
                    </ItemTemplate>
                </asp:TemplateField>

               <asp:TemplateField>
                    <ItemTemplate>
                        <asp:LinkButton ID="lnkEdit" runat="server" CommandName="EditClick" CommandArgument='<%#Eval("RecipientID") %>'
                            Text="Edit">
                        </asp:LinkButton>
                        <asp:LinkButton ID="lnkDelete" runat="server" CommandName="DeleteClick" CommandArgument='<%#Eval("RecipientID") %>'
                            Text="Delete"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>


有什么原因不能在gridview中使用默认排序功能吗?如果可以,请将“箭头”CSS应用于表格标题单元格中的所有超链接

.gvclass th a {background-image...}

这样,所有带有SortExpression的标题都将具有这些CSS属性,而所有不可排序的标题都不会(因为这些单元格中不会生成超链接)。

在ItemTemplate中定义不可排序的列是什么意思? 为要启用排序的各个列的网格asd排序表达式指定Allowsorting=true

<asp:GridView AllowSorting="true"......../> and 
  <asp:TemplateField..............  SortExpression ="Full Name"> 
不要为不需要排序的列指定排序表达式


我认为这对于对指定列进行排序就足够了。

如果您只想在事件中禁用对特定列的排序,通常应该将
GridViewColumn
SortExpression
设置为
null

gvBeneficiary.Columns[0].SortExpression = null;

我已使用listview完成此操作。请使用Gridview进行尝试

我的html代码是

<asp:ListView ID="lst_Area" runat="server" ItemPlaceholderID="tr" OnItemDataBound="lst_Area_ItemDataBound">
                            <LayoutTemplate>
                                <table cellspacing="0">
                                    <tr class="hdrRowColor1">
                                        <td width="35px" align="left">
                                            &nbsp;S.No
                                        </td>
                                        <td align="left" width="400px">
                                            <asp:LinkButton ID="lnk_Name" runat="server" CommandArgument="tblAreaNew.AreaName"
                                                ValidationGroup="vgSearch" OnClick="lnk_Sort">Name</asp:LinkButton>
                                            <asp:Image ID="img_lnk_Name" Visible="false" runat="server" />
                                        </td>
                                        <td align="left" width="250px">
                                            <asp:LinkButton ID="lnk_Location" runat="server" CommandArgument="tblAreaNew.Locationid"
                                                ValidationGroup="vgSearch" OnClick="lnk_Sort">Location</asp:LinkButton>
                                            <asp:Image ID="img_lnk_Location" Visible="false" runat="server" />
                                        </td>
                                        <td align="left" width="175px">
                                            <asp:LinkButton ID="lnk_CreatedBy" runat="server" CommandArgument="v.FirstName" ValidationGroup="vgSearch"
                                                OnClick="lnk_Sort">Created By</asp:LinkButton>
                                            <asp:Image ID="img_lnk_CreatedBy" Visible="false" runat="server" />
                                        </td>
                                        <td align="left" width="120px">
                                            <asp:LinkButton ID="lnk_CreatedOn" runat="server" CommandArgument="tblAreaNew.createddate"
                                                ValidationGroup="vgSearch" OnClick="lnk_Sort">Created On</asp:LinkButton>
                                            <asp:Image ID="img_lnk_CreatedOn" Visible="false" runat="server" />
                                        </td>
                                        <td align="left" width="175px">
                                            <%--<asp:LinkButton ID="lnkCreatedDate" runat="server" CommandArgument="tblUserActivities.CreatedDate"
                                        OnClick="lnk_Sort">Created Date</asp:LinkButton>--%>
                                            <asp:LinkButton ID="lnk_LastModfiedBy" runat="server" CommandArgument="v.FirstName"
                                                ValidationGroup="vgSearch" OnClick="lnk_Sort">Last Modified By</asp:LinkButton>
                                            <asp:Image ID="img_lnk_LastModfiedBy" Visible="false" runat="server" />
                                        </td>
                                        <td align="left" width="120px">
                                            <asp:LinkButton ID="lnk_LastModfiedOn" runat="server" CommandArgument="tblAreaNew.ModifiedDate"
                                                ValidationGroup="vgSearch" OnClick="lnk_Sort">Last Modified On</asp:LinkButton>
                                            <asp:Image ID="img_lnk_LastModfiedOn" Visible="false" runat="server" />
                                        </td>
                                        <td align="center" width="50px">
                                            <asp:LinkButton ID="lnk_Status" runat="server" CommandArgument="tblAreaNew.isactive"
                                                ValidationGroup="vgSearch" OnClick="lnk_Sort">Status</asp:LinkButton>
                                            <asp:Image ID="img_lnk_Status" Visible="false" runat="server" />
                                        </td>
                                        <td align="center" width="50px" style="border-right: 1px solid #6398cc;">
                                            Activity
                                            <%-- <div style="width: 50px; float: right;">
                                            </div>--%>
                                        </td>
                                    </tr>
                                    <tr id="tr" runat="server">
                                    </tr>
                                </table>
                            </LayoutTemplate>
                            <ItemTemplate>
                                <tr>
                                    <td align="left" valign="middle">
                                        &nbsp;<%# Container.DataItemIndex+1 %>.
                                    </td>
                                    <td align="left">
                                        <asp:Label ID="lblAreaID" runat="server" Text='<%# Eval("Areaid")%>' Visible="false"></asp:Label>
                                        <%# Eval("AreaName")%>
                                    </td>
                                    <td align="left">
                                        <%# Eval("Location")%>
                                    </td>
                                    <td align="left">
                                        <%# Eval("CreatedBy")%>
                                    </td>
                                    <td align="left">
                                        <%# Convert.ToDateTime(Eval("CreatedDate")).ToString("MMM, dd yyyy")%>
                                    </td>
                                    <td align="left">
                                        <%# Eval("ModifiedBy")%>
                                    </td>
                                    <td align="left">
                                        <%# Convert.ToDateTime(Eval("ModifiedDate")).ToString("MMM, dd yyyy")%>
                                    </td>
                                    <td align="center">
                                        <asp:Label ID="lblLocationIsActive" runat="server" Style="display: none;" Text='<%# Eval("LocationIsActive")%>'></asp:Label>
                                        <asp:Label ID="lbl_Status" runat="server" Style="display: none;" Text='<%# Eval("IsActive")%>'></asp:Label>
                                        <asp:ImageButton ID="imgbtnStatus" runat="server" CommandArgument='<%# Eval("Areaid") %>'
                                            OnClick="imgbtnStatus_Onclick" />
                                    </td>
                                    <td class="last" align="center">
                                        <asp:Label ID="lblAreaName" runat="server" Style="display: none;" Text='<%# Eval("AreaName")%>'></asp:Label>
                                        <asp:ImageButton ID="imgbtnEdit" runat="server" ImageUrl="~/App_Themes/ThemeNew/Images/edit.png"
                                            ToolTip="Edit Details" CommandArgument='<%# Eval("AreaId") %>' OnClick="imgbtnEdit_OnClick" />
                                        <asp:ImageButton ID="imgbtnDelete" runat="server" ImageUrl="~/App_Themes/ThemeNew/Images/delete.png"
                                            ToolTip="Delete" CommandArgument='<%# Eval("AreaId") %>' Visible="false" OnClientClick="return confirm('Are you sure you want to delete the location?');"
                                            OnClick="imgbtnDelete_OnClick" />
                                    </td>
                                </tr>
                            </ItemTemplate>
                        </asp:ListView>

美国号
名称
位置
创建人
创建于
最后修改人
上次修改日期
地位
活动
.
我的代码是

 protected void lnk_Sort(object sender, EventArgs e)
{
    LinkButton lnk = (LinkButton)sender;
    string arg = lnk.CommandArgument.ToString();
    ViewState["sortCol"] = arg;
    GetSortDirection();
    BindData(ViewState["sortCol"].ToString(), ViewState["sortDir"].ToString(), Convert.ToInt32(ViewState["nmbr"]), Pager.PageSize);
    string name = lnk.ID;
    Image img = (Image)(lst_Area.FindControl("img_" + name));
    if (img != null)
    {
        SetSortOrderImage(img, ViewState["sortDir"].ToString());
    }
}

private void SetSortOrderImage(Image image, String sortorder)
{
    if (sortorder == "asc")
    {
        image.Visible = true;
        image.ImageUrl = "../App_Themes/ThemeNew2/images/up.png";
    }
    else if (sortorder == "Desc")
    {
        image.Visible = true;
        image.ImageUrl = "../App_Themes/ThemeNew2/images/down.png";

    }
}

/// <summary>
/// this method get the sort direction
/// </summary>
private void GetSortDirection()
{
    if (Convert.ToString(ViewState["sortDir"]) == "Desc")
    {
        ViewState["sortDir"] = "asc";
    }
    else
    {
        ViewState["sortDir"] = "Desc";
    }
}
受保护的无效lnk\U排序(对象发送方,事件参数e)
{
LinkButton lnk=(LinkButton)发送器;
字符串arg=lnk.CommandArgument.ToString();
ViewState[“sortCol”]=arg;
GetSortDirection();
BindData(ViewState[“sortCol”].ToString()、ViewState[“sortDir”].ToString()、Convert.ToInt32(ViewState[“nmbr”]、Pager.PageSize);
字符串名称=lnk.ID;
图像img=(图像)(lst_Area.FindControl(“img_”+名称));
如果(img!=null)
{
SetSortOrderImage(img,ViewState[“sortDir”].ToString());
}
}
私有void SetSortOrderImage(图像图像、字符串排序器)
{
如果(排序器==“asc”)
{
图像可见=真实;
image.ImageUrl=“../App_Themes/ThemeNew2/images/up.png”;
}
else if(排序器==“Desc”)
{
图像可见=真实;
image.ImageUrl=“../App_Themes/ThemeNew2/images/down.png”;
}
}
/// 
///此方法可以获得排序方向
/// 
私有void GetSortDirection()