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:
- Chaque fois que je presse le bouton à l'intérieur de l'itemtemplate le colapses étendu de la rangée
- 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