Postback di textbox non eseguito all'interno di una gridview

sabato 14 aprile 2012 - 09.58

vankraster Profilo | Newbie

Ho una gridview con una textbox dentro, il tutto compresso in un UpdatePanel vi posto sotto il Codice, il problemma è che non vienne generato il postback o almeno non vienne chiamato l'event handler "txtAcconto_TextChanged" di OnTextChanged. Vi dico anche che la pagina e una WebForm Mediante Pagina Master (Si intuisce dal MasterPageFile="~/Master.Master"), la stranezza è che questo codice su un'altra pagina mi genera il postback, ma in questa pagina nulla da fare, ho provato ogni cosa anche [ CausesValidation ] ma nulla. Tutto funziona corettemente tranne quello, vi prego aiutatemi.
<%@ Page Title="" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true"
CodeBehind="Ordini_dett.aspx.cs" Inherits="Ebalux.Ordini_dett" %>
....
...
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register Src="Progress.ascx" TagName="Progress" TagPrefix="uc2" %>

<asp:UpdateProgress ID="upProgress" runat="server">
<ProgressTemplate>
<uc2:Progress ID="Progress1" runat="server" />
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpPanel" runat="server">
<ContentTemplate>
<asp:GridView ID="grdClienti" runat="server" AutoGenerateColumns="false" Font-Size="small"
RowStyle-Height="25" PageSize="20" AllowPaging="true" HeaderStyle-ForeColor="black"
HeaderStyle-BackColor="DarkGray" Width="990px" BackColor="White" OnRowCreated="grdAziende_RowCreated"
OnSelectedIndexChanging="grdAziende_SelectedIndexChanging"
onrowdatabound="grdClienti_RowDataBound">
<Columns>
...
<asp:TemplateField HeaderText="% Acc.">
<ItemTemplate>
<asp:TextBox ID="txtAcconto" AutoPostBack="true" OnTextChanged="txtAcconto_TextChanged"
CssClass="textbox_inGrid" runat="server" Text='<%# Eval("PercentualeAcconto") %>'></asp:TextBox>
<asp:FilteredTextBoxExtender ID="FLT_txtAcconto" runat="server" TargetControlID="txtAcconto"
ValidChars="0123456789,">
</asp:FilteredTextBoxExtender>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="50" />
</asp:TemplateField>
...
</gridview>
</ContentTemplate>
</asp:UpdatePanel>

andrestu Profilo | Expert

prova a cercare la textbox con findcontrol nell'evento 'RowCreated' del gridview.
una volta trovato il controllo puoi provare a 'registrarlo' (sempre all'interno dell'evento) o nella collection Triggers dell'update panel oppure direttamente nello script manager.
io di solito faccio queste operazioni con i listview ma dovrebbe essere lo stesso anche con il gridview.

Andrea Restucci - Web Developer

vankraster Profilo | Newbie

Mi dispiace che ti risponda così tardi, il problemma consisteva che io riempivo sempre il gridview anche quando veniva eseguito un postback, ho risolto modificando il codice da Page_Load così:
.....
if (!ispostback) {
//Codice per riempire gridview
}
.......

andrestu Profilo | Expert

sinceramente non ho ben capito, io di solito i controlli come il gridview li riempo in automatico tramite i template e non a mano nell'evento PageLoad, al massimo faccio qualche iterazione negli eventi appositamente progettati per interagire con i controlli contenuti nei template, (itemCreated itemDataBound... ) comunque se hai risolto allora meglio così...

Andrea Restucci - Web Developer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5