2010-10-12 3 views
1

Fondamentalement, j'ai une requête de mise à jour qui s'exécute lorsque vous cliquez sur un bouton de soumission.ASP.NET/SQL trouver l'ID de l'élément et mettre à jour la base de données

J'ai un asp:Repeater dans ma page avec une couche intérieure comme celui-ci

<asp:Repeater id="dgBookings" runat="server" OnItemDataBound="ItemDB"> 

    <itemtemplate> 

     <div class="bookingscontent"> 

     <div class="bookingdetails" id="<%# DataBinder.Eval(Container.DataItem, "booking_ref") %>"> 
      <p class="infotext"><%# DataBinder.Eval(Container.DataItem, "adults") %> <asp:LinkButton OnClick="EditDetails" Text="Edit..." runat="server"></asp:LinkButton></p> 
      <p class="infotext"><asp:LinkButton OnClick="SubmitDetails" Text="Submit..." runat="server"></asp:LinkButton></p> 
     </div> 

     </div> 

    </itemtemplate> 

<asp:Repeater> 

Et les sorties HTML comme ceci

<div class="bookingscontent"> 

     <div class="bookingdetails" id="AL05720"> 
      <p class="infotext">2</p> 
      <p class="infotext"> <a href="javascript:__doPostBack('dgBookings$ctl00$ctl08','')">Submit...</a></span> <a class="EditAdults" href="#" onclick="return false">Edit...</a></p> 

     </div> 

</div> 


<div class="bookingscontent"> 

     <div class="bookingdetails" id="BD45670"> 
      <p class="infotext">4</p> 
      <p class="infotext"> <a href="javascript:__doPostBack('dgBookings$ctl00$ctl08','')">Submit...</a></span> <a class="EditAdults" href="#" onclick="return false">Edit...</a></p> 

     </div> 

</div> 

Fondamentalement, je dois obtenir l'ID de la div où la personne a cliqué sur soumettre et je ne peux pas comprendre comment.

Je veux mettre cet identifiant dans une chaîne ou une session afin qu'il puisse être utilisé dans SubmitDetails sous

Toutes les idées

Merci

Jamie

MISE À JOUR

Voici ma commande Sub comment ajouterais-je le nom de la commande/l'argument de la commande dans cela?

Sub SubmitDetails(ByVal Sender as Object, ByVal e as EventArgs) 

Dim strPassedText = CommandArgument 

Dim LogData2 As sterm.markdata = New sterm.markdata() 

Dim queryUpdate as String = ("UPDATE OPENQUERY (dev,'SELECT * FROM web_data WHERE booking_ref = ''"+ strPassedText +"'' ') SET children = '1' ") 

Dim drSetUpdate As DataSet = LogData2.StermQ2(queryUpdate) 

Session("BookRefID") = strPassedText 

LoadData() 

End Sub 

Merci pour l'aide à ce jour

Jamie

Répondre

4

Modifier votre répéteur comme celui-ci:

<asp:Repeater id="dgBookings" runat="server" OnItemDataBound="ItemDB" OnItemCommand="ItemCommand"> 

    <itemtemplate> 

     <div class="bookingscontent"> 

     <div class="bookingdetails" id="<%# DataBinder.Eval(Container.DataItem, "booking_ref") %>"> 
      <p class="infotext"><%# DataBinder.Eval(Container.DataItem, "adults") %> <asp:LinkButton OnClick="EditDetails" Text="Edit..." runat="server"></asp:LinkButton></p> 
      <p class="infotext"><asp:LinkButton OnClick="SubmitDetails" Text="Submit..." runat="server" CommandName="SubmitDetails" CommandArgument="<%# DataBinder.Eval(Container.DataItem, "booking_ref") %>"></asp:LinkButton></p> 
     </div> 

     </div> 

    </itemtemplate> 

<asp:Repeater> 

J'ai ajouté un CommandArgument à votre linkbutton. Utilisez ensuite l'événement Item_Command du répéteur pour voir l'argument (dans e.CommandArgument). Comme ceci:

Sub SubmitDetails(ByVal Sender as Object, ByVal e as RepeaterCommandEventArgs) 

    Dim strPassedText = e.CommandArgument 

    Dim LogData2 As sterm.markdata = New sterm.markdata() 

    Dim queryUpdate as String = ("UPDATE OPENQUERY (dev,'SELECT * FROM web_data WHERE booking_ref = ''"+ strPassedText +"'' ') SET children = '1' ") 

    Dim drSetUpdate As DataSet = LogData2.StermQ2(queryUpdate) 

    Session("BookRefID") = strPassedText 

    LoadData() 

End Sub 
+0

J'ai ajouté 'CommandArgument' mais comment ajouter la commande Item_command? J'ai mis à jour ma question ci-dessus - Merci pour l'aide jusqu'à présent –

+0

Voir ma réponse modifiée (fondamentalement, ajouter OnItemCommand au répéteur et le pointer vers une méthode dans votre fichier de code). –

+0

Ajouté que dans mais comment faire 'strPassedText' la valeur de l'argument de la commande? –

2

Ajouter le « CommandName » et « CommandArgument » attribue à votre bouton de lien avec l'ID que vous voulez (dans ce cas, CoimmandArgument serait le même que l'ID de votre div et CommandName serait " Modifier ") Vous pouvez ensuite accéder à l'ID dans l'événement Item_Command en appelant la propriété e.commandargument. Assurez-vous juste que vous vérifiez d'abord que e.CommandName est pour le bouton que vous voulez, pas quelque chose comme le bouton "Ajouter".

Questions connexes