92 messaggi dal 30 luglio 2003
www.athesiasnc.it
Salve,
sono una principiante in asp.net e sono alle prese con il datagrid.
Come si fa a cancellare il record selezionato utilizzando il tasto delete?
Premetto che vorrei cancellare il record utilizzando la chiave primaria che è nella prima colonna.
Grazie in anticipo
Marisa di Mauro
3 messaggi dal 30 luglio 2003
Ecco un esempio di pagina ASPX: dovrebbe essere direttamente utilizzabile (richiamandola da una qualsiasi pagina HomePage.aspx).
Devi creare un database Access di nome libreria.mdb, sotto C:\, con una table avente tre campi:CODICE intero, AUTORE e TITOLO stringhe.
Dimmi se ti sembra ok...Ciao (William)

<%@ Page SmartNavigation=true %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<html>
<script language="VB" runat="server">
Dim dt As New DataTable
Dim dv As DataView
Const cnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\libreria.mdb"
Dim da As New OleDbDataAdapter("select * from Libri", cnn)
Sub Page_Load(o As Object, e As EventArgs)
da.Fill(dt)
dv = New DataView(dt)
dv.Sort = dt.Columns(0).ColumnName
if not IsPostBack then 'importante: non va eseguita se semplice postback!
Dim c as BoundColumn, i as integer
for i=0 to dt.Columns.Count-1
c = DBG.Columns(i)
c.DataField = dt.Columns(i).ColumnName
next
BindGrid
end if
End Sub

Sub DBG_Edit(o As Object, e As DataGridCommandEventArgs)
DBG.EditItemIndex = e.Item.ItemIndex
BindGrid
End Sub

Sub DBG_Cancel(o As Object, e As DataGridCommandEventArgs)
DBG.EditItemIndex = - 1
BindGrid
End Sub

Sub DBG_Update(o As Object, e As DataGridCommandEventArgs)
Dim cod as String = e.Item.Cells(0).Text
Dim qtyText As TextBox = CType(e.Item.Cells(1).Controls(0), TextBox)
Dim priceText As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox)
Dim qty As String = qtyText.Text
Dim price As String = priceText.Text
dv.RowFilter = dt.Columns(0).ColumnName & "=" & cod
dv.Delete(0)
dv.RowFilter = ""
Dim dr As DataRow = dt.NewRow()
dr(0) = cod
dr(1) = qty
dr(2) = price
dt.Rows.Add(dr)
Dim c as New OleDbCommandBuilder(da)
da.Update(dt)
DBG.EditItemIndex = - 1
BindGrid
End Sub

Sub DBG_Cmd(o As Object, e As DataGridCommandEventArgs)
if (e.CommandName = "RemoveFrom") then
if e.Item.ItemIndex <> DBG.EditItemIndex then 'non posso cancellare cio` che sto editando
Dim cod As String = e.Item.Cells(0).Text
dv.RowFilter = dt.Columns(0).ColumnName & "=" & cod
dv.Delete(0)
dv.RowFilter = ""
end if
else 'sara` CommandName = Edit, Cancel oppure Update, quindi bisogna uscire
Exit Sub
end if
Dim c as New OleDbCommandBuilder(da)
da.Update(dt)
BindGrid
End Sub

Sub BindGrid
DBG.DataSource = dv
DBG.DataBind
End Sub

</script>

<body style="font: 10pt verdana">

<h3><font face="Verdana">Editing di Libri via DataGrid</font>
(<a href="HomePage.aspx">Torna a Home Page</a>)</h3>

<form runat="server">
<asp:DataGrid id="DBG" runat="server"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
OnEditCommand="DBG_Edit"
OnCancelCommand="DBG_Cancel"
OnUpdateCommand="DBG_Update"
OnItemCommand="DBG_Cmd"
AutoGenerateColumns="false">

<HeaderStyle BackColor="#aaaadd">
</HeaderStyle>

<Columns>

<asp:BoundColumn HeaderText="Code"
ReadOnly=true />
<asp:BoundColumn HeaderText="Title" />
<asp:BoundColumn HeaderText="Author" />

<asp:EditCommandColumn
EditText="Edit"
CancelText="Cancel"
UpdateText="Update"
HeaderText="Editing">

<ItemStyle Wrap="false">
</ItemStyle>

<HeaderStyle Wrap="false">
</HeaderStyle>

</asp:EditCommandColumn>

<asp:ButtonColumn
ButtonType="PushButton"
CommandName="RemoveFrom"
Text="Remove"
HeaderText="Removing">
</asp:ButtonColumn>

</Columns>

</asp:DataGrid>

</form>
</body>
</html>

William
92 messaggi dal 30 luglio 2003
www.athesiasnc.it
Finalmente vedo qualcosa!!!
Però........
Il mio record è formato da diversi campi che devo aggiornare, non è possibile inserirli tutti nel datagrid.

E' possibile selezionare il recor che mi interessa passare l'id ad una pagina visualizzare le informazioni per poi modificarle?
Ovvero da dove comincio?
Ciao e ancora grazie
Marisa

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.