Как мне сделать заголовки gridview для ссылок? - PullRequest
3 голосов
/ 22 апреля 2010

Я хочу, чтобы заголовки моего gridview были гиперссылками, без "SortExpression" ... Я искал в сети, но я не очень успешен.

Например: при нажатии на заголовок простого вида сетки, сайт переходит на веб-страницу.Возможно ли это?

Заранее спасибо!

Ответы [ 4 ]

5 голосов
/ 22 апреля 2010

Вы пробовали шаблон заголовка 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 голосов
/ 27 августа 2013

Я использовал метод, который может быть немного нетрадиционным, но он работает.В моем случае я хотел использовать стандартные элементы управления BoundField в моем gridview, а не использовать поле шаблона с 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>

Затем я использовал код, который запускает событие 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
0 голосов
/ 23 апреля 2010

Теперь у меня есть это представление сетки, и мне нужно, чтобы заголовки были кликабельными, после чего событие начинается (что-то вроде 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>
0 голосов
/ 22 апреля 2010

Я думаю, что здесь нужен HeaderTemplate ...

Ссылка: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.headertemplate.aspx

НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...