GridView e Inserimento

  • Creatore Discussione Creatore Discussione mythar
  • Data di inizio Data di inizio

mythar

Utente Attivo
16 Gen 2006
148
0
0
46
Naples
Eccomi a voi con un nuovo quesito

Ho creato una griglia collegata ad un DataSource
SqlServer2005, ho impostato automaticamente la colonna command per le funzioni Inserimento, Modifica ed Elimina, ma ho il seguente problema:

Se non ho record nella tabella, questa non appare; in questo modo non ho la possibilità di inserire nuovi record, in quanto il Link per l'inserimento viene visualizzato a livello di riga.

Uso ASP.NET 2.0

Se qualcuno può darmi indicazioni gli/le sarò sempre grato.

Bye
 
Il problema nasce proprio perchè la Grid non presenta questa possibilità(se ho detto una cretinata ditelo).
Mettendo il link Insert fuori dalla griglia come faccio a far funzionare l'inserimento?
Tieni presente che sto simulando l'inserimento diretto sulla griglia perkè ho una tabella con 4 campi e non vorrei usare una DetailView per l'inserimento.
 
Preso dalla disperazione ho provato con il DetailView ...
il problema resta.

Io continuo a studiarmi il controllo, ma se qualcuno ha la soluzione io l'accetto.

Grazie:crying:
 
potresti eliminare il tasto che ti interessa dal grid-quel-che-sia e fare un controllo con ado tradizionale basato su una select count o su eof per stampare o meno il bottone a video...
 
Sul forum di Msdn2 ho trovatoun post che suggerisce di creare un Empty Template con un pulsante con CommandName="NEW"

Peò non funziona comunque.

Se ho novità le posto

Bye
 
Insert su griglia
Fase 1: Impostare la pagina

Prima di tutto non ho usato la Proprietà caption della GridView

Ho inserito il seguente codice prima della griglia

Percorso&nbsp;<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
&nbsp;Descrizione&nbsp;<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
&nbsp;Pagina&nbsp;<asp:CheckBox ID="CheckBox1" runat="server" />
&nbsp;<asp:Button ID="Button1" runat="server" Text="Inserisci" CssClass="Pulsante" />

E subito dopo la GridView così configurata

<asp:GridView ID="GridView2" runat="server" AllowPaging="True" BackColor="White" AllowSorting="True"
BorderColor="#E7E7FF" BorderStyle="Ridge" BorderWidth="2px" Font-Bold="True"
CellPadding="3" GridLines="Horizontal" PageSize="20" Width="800px"
AutoGenerateColumns="False" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True"
EmptyDataText="Link non Configurati" DataSourceID="Link"
DataKeyNames="Id" >
<FooterStyle BackColor="#B5C7DE" Height="30px" ForeColor="#4A3C8C" />
<RowStyle BackColor="#E7E7FF" Font-Bold="False" ForeColor="#4A3C8C" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
<HeaderStyle BackColor="Lavender" Font-Bold="True" ForeColor="Black" />
<AlternatingRowStyle BackColor="#F7F7F7" />
<Columns>
<asp:BoundField DataField="Collegamento" HeaderText="Percorso" SortExpression="Collegamento" />
<asp:BoundField DataField="Descrizione" HeaderText="Descrizione" SortExpression="Descrizione" />
<asp:CheckBoxField DataField="Pagina" HeaderText="Pagina" SortExpression="Pagina" />
<asp:BoundField DataField="fk_Utente" HeaderText="fk_Utente" ReadOnly="True" Visible="False" />
<asp:BoundField DataField="Id" HeaderText="Id" Visible="False" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="Link" runat="server" ConnectionString="<%$ ConnectionStrings:M10ConnectionString %>"
SelectCommand="SELECT Office.Link.* FROM Office.Link WHERE [fk_Utente] = @fk_Utente"
DeleteCommand="DELETE FROM Office.[Link] WHERE [Id] = @Id"
UpdateCommand="UPDATE Office.[Link] SET [Collegamento] = @Collegamento, [Descrizione] = @Descrizione, [Pagina] = @Pagina WHERE [Id] = @Id">
<UpdateParameters>
<asp:Parameter Name="Collegamento" Type="String" />
<asp:Parameter Name="Descrizione" Type="String" />
<asp:Parameter Name="Pagina" Type="Boolean" />
<asp:Parameter Name="Id" Type="Int32" />
</UpdateParameters>
<SelectParameters>
<asp:SessionParameter Type="int32" SessionField="IdUtente" Name="fk_Utente" />
</SelectParameters>
<DeleteParameters>
<asp:Parameter Name="Id" Type="Int32" />
</DeleteParameters>
</asp:SqlDataSource>

Da notare che non ho inserito il campo fk_utente nei parametri Update perchè essendo nascosto quando si va a modificare il record viene impostato a Null, e nel mio caso ciò non è possibile, in quanto è un campo obbligatorio

Fase 2: Un pò di codice VB.NET
Questo è il codice che va inserito nell'evento Click del pulsante "Inserisci"

Dim conn As Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings("stringadiconnessione").ConnectionString)
Dim myCommand As Data.SqlClient.SqlCommand = New Data.SqlClient.SqlCommand( _
"INSERT INTO Office.Link(fk_Utente, Collegamento, Pagina, Descrizione) VALUES" & _
" (@fk_Utente, @Collegamento, @Pagina, @Descrizione)", conn)

If Trim(TextBox1.Text) <> "" Then

myCommand.Connection = conn
myCommand.Connection.Open()
myCommand.Parameters.AddWithValue("@fk_Utente", Session("IdUtente"))
myCommand.Parameters.AddWithValue("@Collegamento", Me.TextBox1.Text)
myCommand.Parameters.AddWithValue("@Pagina", Me.CheckBox1.Checked)
myCommand.Parameters.AddWithValue("@Descrizione", Me.TextBox2.Text)
Try
myCommand.ExecuteNonQuery()
Catch err As Data.SqlClient.SqlException
MsgBox(err.Errors.ToString)
Exit Sub
End Try
myCommand.Connection.Close()
Response.Redirect("Link.aspx")
End If
 

Discussioni simili