C# Come faccio a creare un collegamento Ipertestuale evento OnClick sul GridView?

Ho problemi con la creazione di GridView voglio.
Vorrei che l’utente per ottenere all’interno del sito web e vedere la GridView che è collegata ad un DB.
Le colonne sono: ID, InsertionTime, Filepath, ProccessedByUser
Ora voglio che l’utente di scegliere il percorso che lui/lei vorrebbe processo. Quando si fa clic sul percorso, voglio proprio nome utente (registrato con built-in asp l’autenticazione di siti web) per essere aggiornati (aggiunto) in DB.

Il mio codice è standard e non ho a gestire con il codice dietro.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ID" DataSourceID="AccessDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
            ReadOnly="True" SortExpression="ID" />
        <asp:BoundField DataField="starttime" HeaderText="starttime" 
            SortExpression="starttime" />
        <asp:HyperLinkField DataNavigateUrlFields="path" DataTextField="path" 
            HeaderText="path" />
        <asp:BoundField DataField="user" HeaderText="user" SortExpression="user" />
    </Columns>
</asp:GridView>

Ho provato ad utilizzare HyperlinkField ma non mi sembra di supporto onlick eventi.

Qualche suggerimento?
Grazie.

OriginaleL’autore devdc | 2013-03-08

2 risposte

  1. 10

    Presumo che stai cercando per il LinkButton di controllo che ha un OnClick evento.

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="ID" DataSourceID="AccessDataSource1" 
        onselectedindexchanged="GridView1_SelectedIndexChanged">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                ReadOnly="True" SortExpression="ID" />
            <asp:BoundField DataField="starttime" HeaderText="starttime" 
                SortExpression="starttime" />
            <asp:TemplateField HeaderText="Path" SortExpression="Filepath">
                <ItemTemplate>
                    <asp:LinkButton ID="LbPath" runat="server" 
                        Text='<%# Eval("Filepath") %>'
                        CommandName="PathUpdate" 
                        CommandArgument='<%#Bind("path") %>'>
                    </asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="user" HeaderText="user" SortExpression="user" />
        </Columns>
    </asp:GridView>

    Ora è in grado di gestire il LinkButton's fare clic su evento o il GridView's RowCommand evento.

    protected void Gridview1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "PathUpdate")
        {
            string path= e.CommandArgument.ToString();
            //do you what you need to do
        }
    }

    Nota che ho usato un TemplateField che è il più dinamico tipo di colonna in un GridView dal momento che si può aggiungere tutto quello che vuoi, anche nidificate GridViews o UserControls.

    Ehi Tim! Grazie mille! Hai risolto il mio problema anche se ho ancora voglia LinkButton del Testo per un valore associato. Come posso fare? Ho provato Bind() ma non è consentito.
    Perché vuoi usare Bind invece di Eval? È readonly comunque. Editato la mia risposta per mostrare come utilizzare Eval sulla proprietà Text.
    Bellissima!!! Funziona come un fascino! Grazie Tim! 🙂

    OriginaleL’autore Rango

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *