premetto 2 cose :
1 uso di solito SQL server 2005..per un'esigenza ora mi trovo ad usare access
2 ho fatto la stessa cosa usando infatti SQL server 2005, funziona e nn ho avuto problemi
allora ho fatto una GridView con i classici DELETE ed EDIT..quindi definito il datasource in .aspx così :
<asp:AccessDataSource ID="AccessDataSource"
runat="server" DataFile="~/App_Data/database.mdb"
SelectCommand="SELECT [ID], [Categoria], [Sottocategoria], [DataInserimento], [Titolo], [Prezzo], [Sezione], [descrizione], [sizeAlleg], [contenttype], [descrAb], [sizeAb], [contentAb] FROM [upload]"
DeleteCommand="DELETE FROM upload WHERE ID = ?"
UpdateCommand="UPDATE upload SET Categoria= ?, Sottocategoria = ?, Titolo = ?, Prezzo = ? WHERE id = ?"
OnSelecting="SqlDetailView_Selecting"
OnUpdating="RepSQLData_Updating"
OnDeleting="RepSQLData_Deleting" >
<DeleteParameters>
<asp:Parameter Name="ID" Type="Int32"></asp:Parameter>
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Categoria" Type="String"></asp:Parameter>
<asp:Parameter Name="Sottocategoria" Type="String"></asp:Parameter>
<asp:Parameter Name="Titolo" Type="String"></asp:Parameter>
<asp:Parameter Name="Prezzo" Type="Int32"></asp:Parameter>
<asp:Parameter Name="Sezione" Type="String"></asp:Parameter>
<asp:Parameter Name="ID" Type="Int32"></asp:Parameter>
</UpdateParameters>
</asp:AccessDataSource>
cel BL del GridView sul OnClick del button AGGIORNA ho :
protected void RepSQLData_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
System.Data.Common.DbCommand cmd = e.Command;
int index = ModGrid.EditIndex;
string sottocategoria = "";
switch(((DropDownList)ModGrid.Rows[index].FindControl("cmdCategoria")).SelectedValue)
{
case "case1":
sottocategoria = ((DropDownList)ModGrid.Rows[index].FindControl("ddlSottoCateg")).Text;
break;
case "case2":
sottocategoria = ((DropDownList)ModGrid.Rows[index].FindControl("ddlSottoCateg")).Text;
break;
case "case3":
sottocategoria = ((DropDownList)ModGrid.Rows[index].FindControl("ddlSottoCateg")).Text;
break;
case "case4":
sottocategoria = ((DropDownList)ModGrid.Rows[index].FindControl("ddlSottoCateg")).Text;
break;
}
cmd.Parameters['?'].Value =((DropDownList)ModGrid.FooterRow.FindControl("cmdCategoria")).SelectedValue;
cmd.Parameters['?'].Value = ((DropDownList)ModGrid.FooterRow.FindControl("ddlSottoCateg")).SelectedValue;
cmd.Parameters['?'].Value = ((TextBox)ModGrid.FooterRow.FindControl("txtTitolo")).Text;
cmd.Parameters['?'].Value = ((TextBox)ModGrid.FooterRow.FindControl("txtPrezzo")).Text;
cmd.Parameters['?'].Value = ((DropDownList)ModGrid.FooterRow.FindControl("ddlSezione")).SelectedValue;
ma nn funzina l'update..come faccio a dire quale parametro aggiornare?
con SQL server avrei fatto
cmd.Parameters[@Categoria].Value =((DropDownList)ModGrid.FooterRow.FindControl("cmdCategoria")).SelectedValue;con access è giusto fare come ho fatto
cmd.Parameters['?'] ?