2013-04-10 2 views
5

Questo è il mio codice in C#.Come passare il codice dietro variabile tramite hyperlinkfield

protected void Page_Load(object sender, EventArgs e) 
    { 
      Name = "Nitin";      
    } 

Ho un GridView in cui v'è un Hyperlinkfield.I desidera inviare Name da pag # C (uno in codice dietro) alla pagina successiva tramite HyperLinkField ma non è uno dei BoundField dispone di GridView (vale a dire Che ottengo da EntityDataSource). Questo è il mio codice asp.net.

codice:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="WorkItemsEntityDataSource"> 
    <Columns> 
     <asp:hyperlinkfield datatextfield="Id"      
       datanavigateurlfields="Id" 
       datanavigateurlformatstring="~\WorkItems.aspx?Id={0}"   
       headertext="Id"/> 
     <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" /> 
     <asp:BoundField DataField="TFSId" HeaderText="TFSId" SortExpression="TFSId" /> 
     <asp:CheckBoxField DataField="IsBillable" HeaderText="IsBillable" SortExpression="IsBillable" /> 
    </Columns> 
</asp:GridView> 
+0

pubblica il tuo codice di visualizzazione della griglia ed elabora chiaramente il tuo problema .. –

risposta

2

Si può passare URL navigazione dal codice dietro come anche questo

In aspx Pagina

   <asp:TemplateField> 
        <ItemTemplate> 
         <asp:HyperLink ID="hyp" runat="server" Text="Navigation"></asp:HyperLink> 
        </ItemTemplate> 
       </asp:TemplateField>  

Nel codice dietro griglia utente visualizzare i dati rilegati evento come questo

protected void grddata_RowDataBound(object sender, GridViewRowEventArgs e) 
    {  
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      int ID = Convert.Int32(DataBinder.Eval(e.Row.DataItem, "ID")); 
      HyperLink hyp = (HyperLink)e.Row.FindControl("hyp"); 
      hyp.NavigateUrl = "Test.aspx?Name='" + Request.QueryString["test"] + "'&&ID"+ ID +""; 
     } 
    } 

penso che questo ti aiuterà ...

+0

Grazie Buddy. Funziona come un incantesimo. –

+0

:) il tuo benvenuto !!!! – Rajpurohit

+0

Ciao Rajpurohit, mi chiedo come inviare Id dal campo associato di GridView con Name anche tramite HyperLinkField. –

0

Non sono sicuro su come utilizzare in un controllo con associazione a dati di fatto, ma l'URL che si sta costruendo sicuramente non contiene il parametro di QueryString 'Nome'. Esso dovrebbe essere simile a questo:

~\WorkItems.aspx?Id={0}&Name={1} 

della basta sostituire l'ID con nome, se non è necessario Id:

~\WorkItems.aspx?Name={0} 

come per la sostituzione - non so che cosa fa il tuo proprietà data-oggetto hanno e come legarli a loro. Penso che tu non abbia alcun problema dal momento che il binding a Id funziona (probabilmente).

UPDATE

Se nome non è di ritorno da origine dati, è necessario creare sia nuova entità che contiene campo Nome pure, o usare qualche nome della costante, come si dichiara in una pagina (non sono sicuro che questo lo stesso nome dovrebbe essere mostrato in ogni riga). La seconda opzione può essere implementata in questo modo:

~\WorkItems.aspx?Id={0}&Name=<%= Name %> 
+0

In realtà Nome in non quello che sto ricevendo da EntityDataSource questo è il codice dietro la variabile. Quindi, sai come inviare per favore rispondi.Qualsiasi aiuto sarebbe apprezzato . –

+0

Inserito un aggiornamento sull'incorporazione della variabile server nella pagina ASP –

0

È possibile utilizzare:

<asp:TemplateField HeaderText="test"> 
    <ItemTemplate> 
      <asp:HyperLink runat="server" ID="temp" NavigateUrl='<%# String.Format("~\WorkItems.aspx?Id={0}&Name={1}", Eval("Name"), Name)%>' ></asp:HyperLink> 
     </ItemTemplate> 
</asp:TemplateField> 
0

È possibile modificare un URL HyperLinkField s' in questo modo:

protected void pendingAccountsGrid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     ((HyperLink) e.Row.Cell[0].Controls[0]).NavigateUrl = "http://stackoverflow.com"; 
    } 
} 

basta cambiare per specificare l'indice corretto in e.Row.Cell[0].