【问题标题】:How do I make the gridview headers to links?如何将 gridview 标题设置为链接?
【发布时间】:2010-04-22 13:22:45
【问题描述】:

我希望我的 gridview 的标题是超链接,没有“SortExpression”... 我在网上搜索过,但我不是很成功。

谁有解决办法?

例如:当单击简单网格视图的标题时,网站导航到网页。有可能吗?

提前致谢!

【问题讨论】:

    标签: c# asp.net gridview header hyperlink


    【解决方案1】:

    您是否尝试过类似...的 Gridview Header 模板

     <asp:GridView runat="server" ID="grd">
            <Columns>
                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:HyperLink runat="server" NavigateUrl="YourURL"> </asp:HyperLink>
                    </HeaderTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    

    【讨论】:

    • 是的!谢谢!唯一的事情:确保插入“文本”元素,因为它成为实际的链接......
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      现在我得到了这个网格视图,并且我需要标题是可点击的,然后事件开始(类似于 OnClickHeader="header_ClickEvent"?)当然有一个 SortExpression 元素,可以对网格进行排序,但我想能够启动任何事件,例如单击按钮时。

      我在 asp:BoundField 和 asp:TemplateField 中找不到任何解决方案... 我认为超链接可以解决问题,但这有点为时过早。

      网格视图:

      <asp:GridView CssClass="gridview" ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Student_key" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" PagerSettings-Visible="false" PageSize="14">
      
                                          <HeaderStyle CssClass="headerstyle" />
                                          <RowStyle CssClass="rowstyle"/>
                                          <AlternatingRowStyle CssClass="altrowstyle" />
                                          <Columns>
                                              <asp:BoundField DataField="Studentnumber" HeaderText="Studentnummer" >
                                                  <HeaderStyle CssClass="header100" />
                                              </asp:BoundField>
                                              <asp:BoundField DataField="Prefix" HeaderText="Voorletters" >
                                                  <HeaderStyle CssClass="header75" />
                                              </asp:BoundField>
                                              <asp:BoundField DataField="prename" HeaderText="Voornaam" SortExpression="Voornaam">
                                                  <HeaderStyle CssClass="header75" />
                                              </asp:BoundField>
                                              <asp:BoundField DataField="nickname" HeaderText="Roepnaam" >
                                                  <HeaderStyle CssClass="header100" />
                                              </asp:BoundField>
                                              <asp:BoundField DataField="insertion" HeaderText="Tussenvoegsel" >
                                                  <HeaderStyle CssClass="header100" />
                                              </asp:BoundField>
                                              <asp:BoundField DataField="surname" HeaderText="Achternaam">
                                                  <HeaderStyle CssClass="header100" />
                                              </asp:BoundField>
                                              <asp:CommandField SelectText="show results" ShowSelectButton="True" >
                                                  <HeaderStyle CssClass="header100" />
                                              </asp:CommandField>
      
                                          </Columns>
                                          <EmptyDataTemplate >There are no results shown, please try again.</EmptyDataTemplate>
      
                                      </asp:GridView>
      

      【讨论】:

        【解决方案4】:

        我使用了一种可能有点不合常规但确实有效的方法。在我的情况下,我想在我的 gridview 中使用标准的 BoundField 控件,而不是使用带有 HeaderTemplate 和 ItemTemplate 的模板字段。我使用了一个基于 SQL 数据源的简单网格视图,如下所示。

        <asp:GridView
            ID="gvTopXByContest"
            runat="server"
            AutoGenerateColumns="False"
            DataSourceID="dsTopXByContest"
            AllowSorting="true" 
            OnSorting="gvTopXByContest_OnSorting" >
            <Columns>
                <asp:BoundField DataField="txtOnlineUserName" HeaderText="Fan Name & Rank"                   SortExpression="txtOnlineUserName" ItemStyle-Width="155px"></asp:BoundField>
                <asp:BoundField DataField="fltTotalPoints" HeaderText="Points" SortExpression="fltTotalPoints" ItemStyle-Width="40px"></asp:BoundField>
                <asp:BoundField DataField="curWon" HeaderText="Won" SortExpression="curWon" ItemStyle-Width="40px"></asp:BoundField> 
        </Columns>
        </asp:GridView>
        

        然后我使用在 gridview 的 OnSorting 事件上触发的代码进行重定向

        Protected Sub gvTopXByContest_OnSorting(sender As Object, e As GridViewSortEventArgs)
        
            If e.SortExpression <> DirectCast(sender, GridView).SortExpression Then
                If e.SortExpression = "txtOnlineUserName" Then
                    Response.Redirect(URL to redirect to goes here)
                ElseIf e.SortExpression = "fltTotalPoints" Then
                    Response.Redirect(URL to redirect to goes here)
                Else
                    'I could have used another ElseIf here but since there are only 3 columns Else works
                    Response.Redirect(URL to redirect to goes here)
                End If
        
        End Sub
        

        【讨论】:

          猜你喜欢
          • 2019-06-05
          • 2012-03-16
          • 1970-01-01
          • 2011-04-27
          • 1970-01-01
          • 1970-01-01
          • 2013-06-20
          • 1970-01-01
          • 2010-09-25
          相关资源
          最近更新 更多