2010-04-22 48 views
2

我想我的GridView的標題是超鏈接,沒有「SortExpression」... 我搜索了網絡,但我一直不是很成功。如何使GridView標題鏈接?

任何人都有解決方案?

例如:當點擊簡單網格視圖的標題時,站點導航到網頁。可能嗎?

在此先感謝!

回答

3

你有沒有嘗試過的GridView頭模板像...

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

是代碼!謝謝! 唯一的事情:確保插入「文本」元素,因爲這變成了實際的鏈接... – Joris 2010-04-22 14:05:31

0

現在,我得到這個GridView的,我需要的標題是點擊,此後的事件開始(像OnClickHeader =「header_ClickEvent」?) Ofcourse有一個SortExpression元素,它可以對網格進行排序,但我希望能夠啓動任何事件,例如點擊按鈕時。

我無法在asp:BoundField中找到任何解決方案,也沒有asp:TemplateField ... 我認爲超鏈接可以解決問題,但這有點不成熟。

GridView控件:

<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> 
0

我使用的可能是有點非常規的方法,但它的工作原理。在我的情況下,我想在我的GridView中使用標準的BoundField控件,而不是將模板字段與HeaderTemplate和ItemTemplate一起使用。我使用了一個簡單的基於SQL數據源的gridview,看起來像這樣。

<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