85 messaggi dal 04 marzo 2012
Buongiorno,
sto cercando di creare in una tabella delle righe e celle dinamiche, nelle celle devo inserire un bottone ed al click devo far eseguire parte di codice.
Fino alla generazione delle celle e dei bottoni ci sono arrivato, ma quando clicco sul bottone non scaturisce l'evento, cosa sbaglio.
Grazie.

P.S. il codice è solo abbozzato per fare dei test, se tutto funziona poi lo scrivo giusto

HTML:
<asp:table style="width: 100%; margin-top: 0px;" id="table1" runat="server">
</asp:table>

codice:
colsCount = 3
row = New TableRow()
RowsCount = RowsCount + 1

For i = 0 To 2
'Definisco Bottone
button = New Button
button.ID = i
button.Attributes("Class") = "CellaButtum"
button.Attributes("Runat") = "server"
button.Text = "Prova"
button.OnClientClick = "bAcquisti"

' Aggiungo tcontrolli alla TableCell
cell = New TableCell()
cell.Controls.Add(button)
cell.Attributes("class") = "CellaPagDefault"

' Aggiungo TableCell alla TableRow
row.Cells.Add(cell)
Next

table1.Rows.Add(row)


Protected Sub bAcquisti_click(sender As Object, e As System.Web.UI.ImageClickEventArgs)
Response.Redirect("Util_ChiusuraFlussiPratiche.aspx")
End Sub
427 messaggi dal 13 novembre 2009
OnClientClick È sbagliato l&#8217;evento lato server è OnClick
Comunque perché non usi un repeater?
85 messaggi dal 04 marzo 2012
Se uso button.OnClick = "bAcquisti" mi da errore mi dice che System.Web.UI.WebControls.button è protected
sicuramente mi sfugge qualche cosa, cosa sbaglio?

Per quanto riguarda il repeater non l'ho mai usato, mi puoi dare qualche dritta?
Nello specifico io vorrei visualizzare una serie di button che ognuno al click faccia scaturire un evento diverso (per intendersi una specie di menù).
Questi button sono però dinamici in quanto devono essere utilizzabili / visibili in base all'utente che accede.
256 messaggi dal 30 novembre 2004
Ti do un esempio di base
 <asp:Repeater ID="RepeaterDatas" runat="server" OnItemCommand="RepeaterDatas_ItemCommand">
<ItemTemplate>
<asp:LinkButton ID="LinkButton" runat="server" CommandArgument='<%#Eval("Id")%>' CommandName="Azione">
VOCE MENU
</asp:LinkButton>
</ItemTemplate>
 </asp:Repeater>


Nell'evento ItemCommand a seconda di quello che hanno cliccato e quindi del commandName gli fai fare quello che vuoi:

 protected void RepeaterDatas_ItemCommand(object source, RepeaterCommandEventArgs e)
{
   if (e.CommandName.Equals("Azione"))
   {
      FAI QUELLO CHE VUOI 
   }
}
85 messaggi dal 04 marzo 2012
Grazie per l'esempio,
ma visto la mia inesperienza mi sorgono mille dubbi, al livello di codice immagino che possa essere così:

Protected Sub RepeaterDatas_ItemCommand(ByVal souce As Object, ByVal e As RepeaterCommandEventArgs)
If (e.CommandName.Equals("Azione")) Then
Response.Redirect("Azione0.aspx")
End If
If (e.CommandName.Equals("Azione1")) Then
Response.Redirect("Azione1.aspx")
End If
If (e.CommandName.Equals("Azione2")) Then
Response.Redirect("Azione2.aspx")
End If
End Sub

il problema che mi sorge però è come cambiare il valore CommanName passando per es. Azione, Azione1, Azione2 visto che il contenuto è variabile in base a valori presenti in una tabella, idem per "Voce Menu)

<asp:LinkButton ID="LinkButton" runat="server" CommandArgument='<%#Eval("Id")%>' CommandName="Azione">
VOCE MENU
</asp:LinkButton>
256 messaggi dal 30 novembre 2004
quando cicli per creare i bottoni aggiungi l'attributo commandname con il valore perso da db.

poi RepeaterDatas_ItemCommand cicli nuovamente la lista che hai ciclato per i bottoni e verifichi il commandname
85 messaggi dal 04 marzo 2012
Scusa io avrei scritto quanto segue, ma ho dei problemi, in quanto la Table0 non è vista a livello di codice, se invece utilizzo una Table1 che è sopra il repeater mi compila la table, ma poi giustamente non funziona.

<asp:Table ID="Table1" runat="server" Width="100%" BorderColor="#EFEFEF">
</asp:Table>

<asp:Repeater ID="RepeaterDatas" runat="server" OnItemCommand="RepeaterDatas_ItemCommand">
<ItemTemplate>
<asp:table style="width: 100%; margin-top: 0px;" id="table0" runat="server">

</asp:table>
</ItemTemplate>
</asp:Repeater>


LinkButton = New LinkButton
LinkButton.ID = i
LinkButton.Attributes("Class") = "CellaButtum"
LinkButton.Attributes("Runat") = "server"
LinkButton.Text = "Prova"
LinkButton.CommandName = "bAcquisti"

cell = New TableCell()
cell.Controls.Add(LinkButton)
row.Cells.Add(cell)
Table0.Rows.Add(row)
256 messaggi dal 30 novembre 2004
Io farei così:
<asp:Repeater ID="RepeaterDatas" runat="server" OnItemCommand="RepeaterDatas_ItemCommand" >
<ItemTemplate>
<asp:LinkButton ID="btnMio" runat="server" Commadname='<%#Eval("IlTuoValore")%>'  />
</ItemTemplate>
</asp:Repeater>


table è una cosa che non ho mai usato.

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.