31 messaggi dal 13 novembre 2007
Ciao a tutti,
ho il seguente problema, creo una datagrid con una template column la quale contiene un'immagebutton che viene visualizzata oppure no a seconda di un certo valore di un campo della datagrid.
Quando vado a cliccare sull'ImageButton devo poter accedere ai dati della riga della datagrid corrispondente all'immagebutton scelto e il tutto mi funziona perfettamante quando sono nella prima pagina della datagrid.
Il problema sorge quando vado a scegliere una pagina successiva alla prima,
io a video vedo i dati corretti però se clicco sull'imagebutton della prima riga in alto ad es della seconda pagina in realtà vado a visualizzare i dati della prima riga della prima pagina.
Qualcuno ha già riscontrato questo problema?
Avete idee in merito?

Grazie mille
Simona
130 messaggi dal 26 agosto 2004
Ciao Simona, prova a scrivere il codice in cui valorizzi il bottone e il codice che usi per recuperare i dati... ps: il paging lo fai tramite customPaging o usi quello automatico del datagrid?

Stefano M.
31 messaggi dal 13 novembre 2007
Ciao,
allora il bottone lo creo in questo modo:
<code>

<asp:TemplateColumn HeaderText="Termina">
<ItemTemplate>
<asp:ImageButton ID="ibtnTermina" runat="server" CommandName="termina"
ImageUrl ="~/MioApplicativo/buttons/lucchetto.gif" ToolTip="Chiudi il servizio" OnClick="ibtnTermina_Click"/>
</ItemTemplate>
</asp:TemplateColumn>
</code>

il pageIndexChange uso quello automatico e nel momento in cui vado ad invocare l'evento "PageIndexChange" tramite il click del mouse vado ad eseguire il seguente codice:

<code>
protected void dgRichieste_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{
dgRichieste.CurrentPageIndex = e.NewPageIndex;
RiempiLista();
}
</code>

Infine nell'ItemCommand cerco di accedere ai dati della riga corrispondente al bottone cliccato nel seguente modo:

<code>
if (e.CommandName == "termina")
{
Session.Add("IdRichiesta", e.Item.Cells[0].Text);
}
</code>

Ciao e grazie mille
posta anche il codice di RiempiLista() e quello che fai nel PageLoad

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
31 messaggi dal 13 novembre 2007
Ciao
nella PageLoad eseguo il seguente codice:
<code>
protected void Page_Load(object sender, EventArgs e)
{
if (Session["uid"] != null)
{
try
{
Session.Timeout = 60;
objUC = (IUtentiClient)Cache.Get(Session["uid"].ToString());
objUC.SetLifetimeService(60);
if (objUC == null)
{
Sconnessione();
}
lblUtente.Text = objUC.GetName();
string strURL = System.Configuration.ConfigurationManager.AppSettings["StringaDiConnessione"];
objConn = new SqlConnection(strURL);
if (!IsPostBack)
{
txtData.Text = DateTime.Now.ToShortDateString();
}
else
{
if (Session["DataSelezionata"] != null)
{
txtData.Text = Session["DataSelezionata"].ToString();
}

}
RiempiLista();
}
catch (Exception exc)
{
lblMessaggio.Text = exc.Message;
}
}
}
</code>

Mentre nella funzione RiempiLista() eseguo il seguente codice:

<code>

private void RiempiLista()
{
try
{
SqlDataAdapter daRic = new SqlDataAdapter("SELECT richieste.*, ditte.denominazione as ditta FROM Richieste inner join ditte on fkDitta = PkIdDitta WHERE DataInizioLavoro = CONVERT(DATETIME,'" + txtData.Text.ToString() + "', 104)", objConn);
DataTable tblRic = new DataTable();
daRic.Fill(tblRic);
//Aggiungo una colonna alla tabella con la concatenazione dei dati relativi ai mezzi utilizzati e alle relative ore
tblRic.Columns.Add("RiepilogoMezziUtilizzati");
tblRic.Columns.Add("TotOrePerMezzo");
String strImporto = "";


if (tblRic.Rows.Count > 0)
{
foreach (DataRow riga in tblRic.Rows)
{
Importo = 0;
strImporto = "";
riga["RiepilogoMezziUtilizzati"] = "";
riga["TotOrePerMezzo"] = "";
if (riga["NumeroMezzi35"].ToString() != "0")
{
riga["RiepilogoMezziUtilizzati"] = "N°"+ riga["NumeroMezzi35"].ToString() +" Mezzi da 35 q per "+ riga["OreMezzo35"].ToString() +" ore <br>";
riga["TotOrePerMezzo"] = strImporto;
}
}

}
dgRichieste.DataSource = tblRic;
dgRichieste.DataBind();
}
catch (Exception exc)
{
lblMessaggio.Text = exc.Message;
}
}
</code>

Ciao e grazie
Simona
hai verificato se viene eseguito prima PageIndexChanged o ItemCommand? lo puoi fare inserendo un punto d'interruzione

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
31 messaggi dal 13 novembre 2007
Viene eseguita prima la ItemComman e poi la PageIndexChanged
mmm però con la condizione che poi non dovresti avere problemi...

mi sfugge qualcosa.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.