Salve a tutti
da stamattina sto provando a inoltrarmi nella collaborazione db objectdatasource.mentre il select tramite dataobject è banale e riesce subito, l'update mi da sempre è comunque un messaggio criptico,inquietante ma a quanto pare diffuso :"impossibile trovare un metodo non generico "etc etc
dopo un po di google ho escluso fossi nel caso descritto da boschi
http://blog.boschin.it/archive/2006/06/01/cultureinfobug_workaround.aspx sul suo blog ,perchè non ho la culture info settata ne utilizzo il DataObjectTypeName ,altre fonti (tra cui il libro di esposito) pongono l'attenzione sul datakeysname consigliando di richiamare il parametro della chiave utilizzando il suffisso "original_" cosa che ho puntualmente fatto ,ma nessun risultato nemmeno cosi.inutile anche settare il readonly del campo chiave su false .a questo punto mi è rimasto il ritorno al sqldatasource ,ma avendo fattoci la bocca e comprendendo come con le classi nell'objectdatasource si aprano mondi ,pregherei qualche anima pia di dedicarmi 5 minuti .
Grazie
Arnaldo
segue codice
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" BackColor="White"
BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="ObjectDataSource2"
GridLines="Horizontal" Height="50px" Width="125px"
DataKeyNames="id_tour"
>
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<EditRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
<Fields>
<asp:BoundField DataField="id_tour" HeaderText="id_tour" SortExpression="id_tour" ReadOnly="false" />
<asp:BoundField DataField="data_inizio" HeaderText="data_inizio" SortExpression="data_inizio" />
<asp:BoundField DataField="data_fine" HeaderText="data_fine" SortExpression="data_fine" />
<asp:TemplateField HeaderText="agenzia ">
<ItemTemplate>
<asp:dropdownlist ID="agenzia" runat="server" DataSourceID="SqlDataSource3"
DataValueField="id_agenzia" DataTextField="nome_agenzia"
SelectedValue='<%# Bind("id_agenzia") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="codice_tour" HeaderText="codice_tour" SortExpression="codice_tour" />
<asp:TemplateField HeaderText="responsabile ">
<ItemTemplate>
<asp:dropdownlist ID="responsabile" runat="server" DataSourceID="SqlDataSource4"
DataValueField="id_responsabile" DataTextField="elementi_capogruppo"
SelectedValue='<%# Bind("id_responsabile") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="guida ">
<ItemTemplate>
<asp:dropdownlist ID="guida" runat="server" DataSourceID="SqlDataSource5"
DataValueField="id_guida" DataTextField="elementi_guida"
SelectedValue='<%# Bind("id_guida") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="pax" HeaderText="pax" SortExpression="pax" />
<asp:BoundField DataField="luogo_partenza" HeaderText="luogo_partenza" SortExpression="luogo_partenza" />
<asp:BoundField DataField="luogo_arrivo" HeaderText="luogo_arrivo" SortExpression="luogo_arrivo" />
<asp:TemplateField HeaderText="luogo ritiro ">
<ItemTemplate>
<asp:dropdownlist ID="id_luogo_ritiro" runat="server" DataSourceID="SqlDataSource6"
DataValueField="id_luogo_ritiro" DataTextField="luogo"
SelectedValue='<%# Bind("id_luogo_ritiro") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="luogo consegna ">
<ItemTemplate>
<asp:dropdownlist ID="luogo_consegna" runat="server" DataSourceID="SqlDataSource6"
DataValueField="id_luogo_ritiro" DataTextField="luogo"
SelectedValue='<%# Bind("id_luogo_consegna") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="pax_riserva" HeaderText="pax_riserva" SortExpression="pax_riserva" />
<asp:TemplateField HeaderText="modalita pagamento ">
<ItemTemplate>
<asp:dropdownlist ID="modalita_pagamento" runat="server" DataSourceID="SqlDataSource7"
DataValueField="id_tipo_pagamento" DataTextField="descrizione"
SelectedValue='<%# Bind("modalita_pagamento") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="tipo prenotazione ">
<ItemTemplate>
<asp:dropdownlist ID="tipo_prenotazione" runat="server" DataSourceID="SqlDataSource8"
DataValueField="id_tipo_prenotazione" DataTextField="descrizione"
SelectedValue='<%# Bind("tipo_prenotazione") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="note_tour" HeaderText="note_tour" SortExpression="note_tour" />
<asp:BoundField DataField="costo_unitario" HeaderText="costo_unitario" SortExpression="costo_unitario" />
<asp:BoundField DataField="confermato" HeaderText="confermato" SortExpression="confermato" />
<asp:TemplateField HeaderText="canale riservato ">
<ItemTemplate>
<asp:dropdownlist ID="canale_riservato" runat="server" DataSourceID="ObjectDataSource1"
DataValueField="canale" DataTextField="canale"
SelectedValue='<%# Bind("canale_riservato") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" />
</Fields>
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<AlternatingRowStyle BackColor="#F7F7F7" />
</asp:DetailsView>
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server"
SelectMethod="recupera_prenotazione"
TypeName="prenotazione"
UpdateMethod="aggiorna_prenotazione"
>
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="id_tour" PropertyName="SelectedValue"
Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="canale_riservato" Type="string" />
</UpdateParameters>
</asp:ObjectDataSource>
public DataSet recupera_prenotazione(int id_tour)
{
mio_numero_tour = id_tour;
connStr = ConfigurationManager.ConnectionStrings["connessione"].ConnectionString;
using (SqlConnection myConnection = new SqlConnection(connStr))
{
myConnection.Open();
string selectsql = "SELECT id_tour,[data_inizio], [data_fine], [id_agenzia], [id_responsabile], [id_guida], [pax],codice_tour, [luogo_partenza], [luogo_arrivo], [id_luogo_ritiro], [id_luogo_consegna], [bkr_data_ora], [pax_riserva], [modalita_pagamento], [tipo_prenotazione], [costo_unitario], [confermato], [canale_riservato],note_tour,tipo_prenotazione,modalita_pagamento,pax_riserva,costo_unitario FROM [tab_prenotazione_giornalieri] WHERE ([id_tour] = @id_tour) ";
SqlDataAdapter adapter = new SqlDataAdapter(selectsql, myConnection);
adapter.SelectCommand.Parameters.Add("@id_tour", SqlDbType.Int).Value = id_tour;
DataSet ds = new DataSet();
adapter.Fill(ds, "radio");
myConnection.Close();
return ds;
}
}
public void aggiorna_prenotazione(string canale_riservato)
{
connStr = ConfigurationManager.ConnectionStrings["connessione"].ConnectionString;
using (SqlConnection myConnection = new SqlConnection(connStr))
{
myConnection.Open();
SqlCommand mese_cmd = myConnection.CreateCommand();
mese_cmd.CommandType = CommandType.Text;
mese_cmd.CommandText = "UPDATE tab_prenotazione_giornalieri set canale_riservato=@canale_riservato where id_tour=@original_id_tour";
mese_cmd.Parameters.Add("@canale_riservato", SqlDbType.NVarChar,10).Value = canale_riservato;
mese_cmd.ExecuteNonQuery();
myConnection.Close();
}
}