Hello World ! My code doesn't works, i don't understand why.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Height="278px"
Width="540px" BackColor="Aqua" ShowFooter="true" OnRowDeleting="OnRowDeleting"
OnRowDataBound="OnRowDataBound">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="50">
<ItemStyle Width="50px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="NomeProdotto" HeaderText="Nome" ItemStyle-Width="150">
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="PrezzoProdotto" HeaderText="PrezzoProdotto" ItemStyle-Width="150"
DataFormatString="{0:N2}" ItemStyle-HorizontalAlign="Right">
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="Quantità" HeaderText="Quantità" ItemStyle-Width="150">
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
<asp:CommandField ShowDeleteButton="True" ButtonType="Button" />
</Columns>
</asp:GridView>
And the vb
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' Al load nasconde tutto il pannello contenente i dati richiesti al utente per la conferma ordine + spedizione.
Panel1.Visible = False
' Fix creava doppioni al inserimento di nuovi item
If Not Me.IsPostBack Then
Me.BindGrid()
End If
' Ok
End Sub
Protected Sub BindGrid()
Dim constr As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
Dim con As New SqlConnection()
con.ConnectionString = constr
con.Open()
' Query SQL
Using cmd As New SqlCommand("SELECT Id,NomeProdotto,PrezzoProdotto,Quantità FROM aProdotti WHERE ID=" & Request.QueryString("ID").ToString & "", con)
Using sda As New SqlDataAdapter(cmd)
Dim dt As New DataTable()
sda.Fill(dt)
Dim SessionDt As New DataTable()
SessionDt = Session("dt")
If Not SessionDt Is Nothing Then
If (dt.Rows.Count > 0) Then
Dim dr As DataRow
dr = SessionDt.NewRow()
dr("Id") = dt.Rows(0)("Id").ToString()
dr("NomeProdotto") = dt.Rows(0)("NomeProdotto").ToString
dr("PrezzoProdotto") = dt.Rows(0)("PrezzoProdotto").ToString
dr("Quantità") = dt.Rows(0)("Quantità").ToString
SessionDt.Rows.Add(dr)
End If
Session("dt") = SessionDt
GridView1.DataSource = SessionDt
GridView1.DataBind()
'Calculate Sum and display in Footer Row
Dim total As Decimal = SessionDt.AsEnumerable().Sum(Function(row) row.Field(Of Decimal)("PrezzoProdotto"))
GridView1.FooterRow.Cells(1).Text = "Total"
GridView1.FooterRow.Cells(1).HorizontalAlign = HorizontalAlign.Right
GridView1.FooterRow.Cells(2).Text = total.ToString("N2")
Else
Session("dt") = dt
GridView1.DataSource = dt
GridView1.DataBind()
'Calculate Sum and display in Footer Row
Dim total As Decimal = dt.AsEnumerable().Sum(Function(row) row.Field(Of Decimal)("PrezzoProdotto"))
GridView1.FooterRow.Cells(1).Text = "Total"
GridView1.FooterRow.Cells(1).HorizontalAlign = HorizontalAlign.Right
GridView1.FooterRow.Cells(2).Text = total.ToString("N2")
End If
End Using
End Using
End Sub
' D E L E T E
Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim item As String = e.Row.Cells(0).Text
For Each button As Button In e.Row.Cells(4).Controls.OfType(Of Button)()
If button.CommandName = "Delete" Then
button.Attributes("onclick") = "if(!confirm('Do you want to delete " + item + "?')){ return false; };"
End If
Next
End If
End Sub
Protected Sub OnRowDeleting(sender As Object, e As GridViewDeleteEventArgs)
' Quale riga eliminare - indice
Dim index As Integer = Convert.ToInt32(e.RowIndex)
Dim dt As DataTable = TryCast(Session("dt"), DataTable)
dt.Rows(index).Delete()
Session("dt") = dt
' Refresh la grid view
Me.BindGrid()
End Sub
' E N D - D E L E T E
Anyone can help me ? What's wrong here ? Fnally i would like to add a function in my grid view : set the row editable. Thanks to all