Entra

View Full Version : [ASP.NET]Evento della DataGrid non viene gestito


^TiGeRShArK^
04-05-2005, 09:06
è da ieri ke mi sto inkasinando con questo problema......
ho una datagrid collegata regolarmente ad una data source con due colonne ButtonColumn e con varie TemplateColumn, una di queste ultime contiene un checkbox.
Il problema è ke se utilizzo i pulsanti nelle ButtonColumn l'evento viene catturato e gestito correttamente dall'apposita subroutine, mentre se utilizzo il checkbox, l'evento ItemCommand non viene catturato.......
qui di seguito vi riporto il codice della DataGrid:

<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" DataMember="Table" AllowSorting="True" DataKeyField="ID" CellSpacing="1" GridLines="None" CellPadding="3" BackColor="White" ForeColor="Black" EnableViewState="false" DataSource="<%# SqlFilm %>">
<ItemStyle verticalalign="Top" backcolor="#DEDFDE"></ItemStyle>
<HeaderStyle font-bold="True" horizontalalign="Center" forecolor="White" backcolor="#4A3C8C"></HeaderStyle>
<Columns>
<asp:ButtonColumn Text="Modifica" ButtonType="PushButton" CommandName="Modifica"></asp:ButtonColumn>
<asp:ButtonColumn Text="Elimina" ButtonType="PushButton" CommandName="Elimina"></asp:ButtonColumn>
<asp:BoundColumn DataField="ID" SortExpression="ID" HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="Titolo" SortExpression="Titolo" HeaderText="Titolo"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="In Sala">
<ItemTemplate>
<asp:CheckBox id="CheckBox1" runat="server" autoPostBack="true" checked='<%# CheckInSala(Container)%>' ></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Locandina">
<ItemTemplate>
<asp:Image Width="120" ImageUrl='<%# "readImage.aspx?id="&DataBinder.Eval(Container.DataItem, "ID") %>' Runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Recensione">
<ItemTemplate>
<%# Truncate(DataBinder.Eval(Container.DataItem, "Recensione").ToString(),120) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Distribuzione" SortExpression="Distribuzione" HeaderText="Distribuzione"></asp:BoundColumn>
<asp:BoundColumn DataField="Durata" SortExpression="Durata" HeaderText="Durata"></asp:BoundColumn>
<asp:BoundColumn DataField="Regia" SortExpression="Regia" HeaderText="Regia"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Attori">
<ItemTemplate>
<%# Truncate(DataBinder.Eval(Container.DataItem, "Attori").ToString(),100) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Genere" SortExpression="Genere" HeaderText="Genere"></asp:BoundColumn>
<asp:BoundColumn DataField="URL" SortExpression="URL" HeaderText="URL"></asp:BoundColumn>
<asp:BoundColumn DataField="DataInizio" SortExpression="DataInizio" HeaderText="DataInizio" DataFormatString="{0:dd/MM/yyyy}"></asp:BoundColumn>
<asp:BoundColumn DataField="DataFine" SortExpression="DataFine" HeaderText="DataFine" DataFormatString="{0:dd/MM/yyyy}"></asp:BoundColumn>
</Columns>
</asp:datagrid>


La colonna incriminata è <asp:TemplateColumn HeaderText="In Sala"> contenente il controllo checkbox1
e questo invece è il codice ASP.NET relativo alla routine di gestione:

Private Sub DataGrid1_ItemCommand(ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
Dim result As Integer
Dim filmID As String
msgbox("NOOOOOOO")
filmID = e.Item.Cells(2).Text
Dim check As CheckBox = e.Item.FindControl("CheckBox1")
if e.CommandSource Is check
msgbox("ERA ORA!")
else If e.CommandName = "Modifica" Then
Response.Redirect("ModificaFilm.aspx?ID="+filmID)
else if e.CommandName = "Elimina" Then
result=msgbox("Sei sicuro di voler Eliminare "+CHR(34)+e.Item.Cells(3).text+CHR(34)+"?", vbYesNo, "Avviso")
if result = 6
Dim ConnectionString As String = **************************
Dim myConnection As New SqlConnection(ConnectionString)
Dim CommandText As String="SELECT Locandina FROM Film WHERE ID="+filmId
Dim myCommand As New SqlCommand(CommandText, myConnection)
Dim reader As SqlDataReader
myConnection.Open()
myCommand.CommandText=CommandText
reader=myCommand.ExecuteReader()
reader.Read()
Dim strDelete As String = Server.MapPath("/image/film_proiettati/"+reader.GetString(0))
File.Delete(strDelete)
reader.Close()
CommandText = "DELETE FROM Film WHERE ID="+filmID
myCommand.CommandText=CommandText
myCommand.ExecuteNonQuery()
myConnection.Close()
DisplayGrid()
End if
End If
End Sub

Ovviamente nel Page_Load c'è l'istruzione
AddHandler DataGrid1.ItemCommand, AddressOf DataGrid1_ItemCommand

Avete qualke idea del motivo x cui l'evento di cambiamento del checkbox appartenente alla colonna Template non viene gestito???????????

^TiGeRShArK^
05-05-2005, 07:41
nessuno ha qualke idea????:cry: