2013-09-25 4 views
0

J'ai un bouton à l'intérieur d'un templateField sur un GridView expansible et j'ai besoin de quand le bouton est pressé pour enregistrer le contenu d'une zone de texte dans le même champ de modèle dans une base de données et affiche à nouveau le texte dans la zone de texte.VB.NET - Bouton à l'intérieur de TemplateField sur un GridView extensible

Quelque chose comme:

Entrez le texte dans textBox -> Enregistrer -> Envoyer texte de TextBox dans DB -> Afficher le texte enregistré dans TextBox

Le code de l'étiquette que je utilise pour définir le gridview extensible est comme suit:

<script language="javascript" type="text/javascript"> 
    function divexpandcollapse(divname) { 
     var div = document.getElementById(divname); 
     var img = document.getElementById('img' + divname); 
     if (div.style.display == "none") { 
      div.style.display = "block"; img.src = "Images/Icons/minus.jpg"; 
     } else { div.style.display = "none"; img.src = "Images/Icons/plus.jpg"; } 
    }</script> 

     <asp:GridView ID="GV_SL" runat="server" OnRowDataBound="gvUserInfo_RowDataBound" 
      DataSourceID="SQL" > 
      <%-- Style="font-size: x-small" AllowPaging="True" --%> 
      <Columns> 
       <asp:TemplateField ItemStyle-Width="50px"> 
        <ItemTemplate> 
         <a href="JavaScript:divexpandcollapse('div<%# Eval("ID") %>');"> 
          <img id="imgdiv<%# Eval("ID") %>" width="15px" border="0" src="Images/Icons/plus.jpg" /></a></ItemTemplate> 
        <ItemStyle Width="40px" /> 
       </asp:TemplateField> 
       <asp:BoundField DataField="Value" HeaderText="Value" SortExpression="Value"> 
        <ItemStyle HorizontalAlign="Left" Font-Bold="True" /> 
       </asp:BoundField> 

       <asp:TemplateField> 
        <ItemTemplate> 
         <tr> 
          <td colspan="100%"> 
           <div id="div<%# Eval("reporting_group") %>" style="display: none; position: relative; 
            left: 15px; overflow: auto"> 
            <asp:GridView ID="gvChildGrid" runat="server" AutoGenerateColumns="false" /> 

             <Columns> 

              <asp:BoundField DataField="Value2" HeaderText="Value2" HeaderStyle-HorizontalAlign="Left" 
               DataFormatString="{0:N0}" /> 
             </Columns> 
            </asp:GridView> 
            <br /> 
            <asp:TextBox ID="TB_Comments" runat="server" Text="Example: Text will be entered here" 
             TextMode="MultiLine" Rows="4" Width="510px"></asp:TextBox> 
            <asp:Button ID="B_Save" runat="server" CommandName="AddText" 
            CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>" Text="Save Changes" /> 
           </div> 
          </td> 
         </tr> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

J'ai deux problèmes au moment:

  1. Chaque fois que je presse le bouton à l'intérieur de l'itemtemplate le colapses étendu de la rangée
  2. Je ne peux pas créer un événement une fois que le bouton est pressé.

J'ai essayé le code suivant pour le 2ème point avec un message de test à charger dans une étiquette et la zone de texte, mais il semble doens't faire quoi que ce soit:

Protected Sub GV_SL_RowCommand(ByVal sender As Object, _ 
ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) 
    If (e.CommandName = "AddText") Then 
     ' Retrieve the row index stored in the CommandArgument property. 
     Dim index As Integer = Convert.ToInt32(e.CommandArgument) 

     ' Retrieve the row that contains the button 
     ' from the Rows collection. 
     Dim row As GridViewRow = GV_SL.Rows(index) 
     Label1.Text = index & " - test" 
     ' Add code here to add the item to the shopping cart. 

     Dim TB_Com_Control As System.Web.UI.WebControls.TextBox = DirectCast(row.FindControl("TB_Comments"), System.Web.UI.WebControls.TextBox) 
     TB_Com_Control.Text = "Test " 

    End If 
End Sub 

Toutes les idées?

grâce

Répondre

0

je réussi à résoudre les deux problèmes

1.Everytime j'appuie sur le bouton à l'intérieur de la itemtemplate la ligne élargie colapses

Je résolus en ajoutant une mise à jour AJAX pannel

<asp:UpdatePanel ID="UP_Text" runat="server" UpdateMode="Conditional"> 
<ContentTemplate> 
<asp:TextBox ID="TB_Comments" runat="server" Text="Example: Text will be entered here" 
TextMode="MultiLine" Rows="4" Width="510px"></asp:TextBox> 
<asp:Button ID="B_Save" runat="server" CommandName="AddText" 
CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>" Text="Save Changes" /> 
</ContentTemplate> 
</asp:UpdatePanel> 

2. Je ne peux pas créer un événement une fois que le bouton est enfoncé.

Je résolus en ajoutant OnRowCommand = "GV_SL_RowCommand"

<asp:GridView ID="GV_SL" runat="server" OnRowDataBound="gvUserInfo_RowDataBound" 
     DataSourceID="SQL" OnRowCommand="GV_SL_RowCommand" > 

Hope it helps

Questions connexes