2011-03-22 4 views
2

J'ai un GridView qui montre des données:Passage Valeur lorsque Sélectionnez le GridView à une autre page

ENTITY_ID (PK)
Nom
Description de

Maintenant, je suis InterActions pour le produit dans mon GridView. Je dois passer Entity_ID à une autre page et dans cette page je montre plus de contenu pour cet Entity_ID.

Comment choisir la valeur Entity_ID et la transmettre en tant que chaîne de requête? J'ai ce code:

ProductsDataGridView.SelectedRows(0).Cells(1).Value.ToString() 

Toutes les réponses seront appréciées! Je vous remercie.

Répondre

2

C'est ce que je l'ai fait:

protected void gvAgentList_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     GridViewRow row = gvAgentList.SelectedRow; 
     Response.Redirect("~/FrontEnd/Registration.aspx? EntityID=" + row.Cells[0].Text); 
    } 
0

il y a plusieurs approches comment transmettre des données entre les pages:

http://msdn.microsoft.com/en-us/library/6c3yckfw.aspx

la chaîne de requête est ok si ça ne vous dérange pas l'URL contiendra l'ID

vous pouvez aussi envisager la page .PreviousPage des options ci-dessus, ce qui semble raisonnable dans votre cas

6

Ajoutez une nouvelle colonne de modèle d'élément dans votre grille et ajoutez le lien de sélection comme ci-dessous.

<asp:TemplateField HeaderText="View Details"> 
<ItemTemplate> 
    <asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/detailspagename.aspx?ID={0}", Eval("Entity_ID")) %>'>Select</asp:HyperLink> 
</ItemTemplate> 

+0

J'aime votre idée plus. – m4tt1mus

+0

Cela me donne une erreur: Ce nom contient une majuscule qui n'est pas autorisée. –

+0

@ klm9971: Comment vous utilisez ceci dans votre page? – MUS

1

Utilisez l'événement OnRowSelected. Une fois qu'il appelle que vous pouvez obtenir la ligne sélectionnée, puis l'identifiant de l'entité. Ensuite, vous pouvez construire une chaîne avec l'identifiant de l'entité dans la chaîne de requête et response.redirect à cette page.

+0

Aucun événement appelé OnRowSelected. J'ai essayé ça. –

+0

@ klm9971 Oui, je voulais dire SelectedIndexChanged. OnRowSelected n'est disponible que dans certains contrôles tiers. Ma faute. – m4tt1mus

+0

Merci mec, ça a marché. Marqué votre réponse comme OUI. –

0

Vous pouvez également utiliser DataKeys mis DataKeys='Entity_ID'

Dans le code derrière vous pouvez accéder à la même chose que selectedrow.DataKeys[rowindex]["Entity_ID"]

ligne ici sélectionnée est celle que vous avez sélectionné, RowIndex l'index et vous obtenez le ENTITY_ID correspondant

0

@GSGuy:

<asp:GridView runat ="server" ID = "gvAgentList" 
      AllowPaging = "True" 
      AutoGenerateSelectButton="True" AllowSorting="True" BackColor="#E8E8E8" 
      BorderColor="#003399" BorderStyle="Solid" BorderWidth="1px" Height="375px" 
      Width="823px" AutoGenerateColumns="False" 
      DataKeyNames="ID" DataSourceID="SqlDataSource1" onselectedindexchanged="gvAgentList_SelectedIndexChanged"> 


     <AlternatingRowStyle ForeColor="#0066CC" /> 
     <Columns> 

      <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
       ReadOnly="True" SortExpression="ID" /> 
      <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
      <asp:BoundField DataField="Description" HeaderText="Description" 
       SortExpression="Description" /> 

<asp:TemplateField HeaderText="View Details"> 
<ItemTemplate> 
    <asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/detailspagename.aspx?ID={0}", Eval("Entity_ID")) %>'>Select</asp:HyperLink> 
</ItemTemplate> 

     </Columns> 
     <HeaderStyle ForeColor="#3366FF" /> 

    </asp:GridView> 
0
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    string fname, lname; 
    fname = GridView1.Rows[e.NewEditIndex].Cells[0].Text; 
    Session["fname"] = fname; 
    lname = GridView1.Rows[e.NewEditIndex].Cells[1].Text; 
    Session["lname"] = lname; 
    Response.Redirect("gridpass.aspx"); 
} 

Sur gridpass.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    TextBox1.Text = Session["fname"].ToString(); 
    TextBox2.Text = Session["lname"].ToString(); 
} 
Questions connexes