ASP.NET: vengono trattati i tipi di oggetti come parametri durante l'aggiornamento in ObjectDataSource

StackOverflow https://stackoverflow.com/questions/891959

Domanda

Come fate a aggiornare diciamo per esempio un FormView con una fonte di ObjectDataSource. Il DataObjectTypeName è una classe che ho già segnato con un attributo DataObject. Ora, voglio personalizzare il processo di aggiornamento e aggiungere alcuni dati personalizzati al parametro. Che cosa abbiamo bisogno di farlo?

Esempio: Ho una classe BLL che chiamiamolo "ProductsBLL" e un "prodotto" classe di dati.

dichiaro il seguente controllo ObjectDataSource:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
DataObjectTypeName="Product" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetProduct" TypeName="Assembly.ProductsBLL" 
UpdateMethod="UpdateProduct">
  <UpdateParameters>
    <asp:Parameter Name="product" Type="Object" />
  </UpdateParameters>
  <SelectParameters>
    <asp:QueryStringParameter Name="productID" QueryStringField="ProdID" Type="Int32" />
  </SelectParameters>
</asp:ObjectDataSource>

Dato che il metodo di aggiornamento della classe ProductsBLL accetta un oggetto prodotto come parametro. Ora, prima che l'aggiornamento avvenga, voglio aggiungere dati personalizzati al parametro del prodotto. Come posso fare?

È stato utile?

Soluzione

Non sono sicuro di quello che la tua domanda è (è necessario per essere più precisi), ma il flusso generale è la seguente:

  • Il GridView è legata ad un ObjectDataSource.

  • L'ObjectDataSource è legata a un livello logico Biz tramite la proprietà TypeName - Questa è la classe che verrà creata un'istanza per l'esecuzione di operazioni sui dati. (Lo chiamano ProductsBLL per esempio).

  • Si utilizza anche una proprietà DataObjectTypeName che è il tipo di oggetto che viene recuperato / aggiornati / cancellati dal BLL. (Diciamo, Product)

  • Inoltre, specifica i metodi nella BLL chiamare ogniqualvolta un'azione viene richiamato (UpdateMethod, SelectMethod, ecc) (per esempio, ProductsBLL.UpdateProducts, ProductsBLL.DeleteProducts)

  • Il vostro BLL poi esegue le operazioni doganali, come logica di convalida sui dati ricevuti dalla ObjectDataSource e chiama il tuo dataLayer per eseguire l'attuale updation / cancellazione dal database. (Diciamo, ProductsDataLayer.UpdateProduct())

Se avete bisogno di ulteriori informazioni, si prega di modificare la tua domanda per essere più precisi.

Modifica (dopo modifica alla domanda iniziale):


La modifica del parametro di Product prima di aggiornamento dovrebbe essere semplice come:

// In Biz Logic Layer.
public int UpdateProduct(Product p)
{
  // Modify the ProductName and the Price properties of this Product.
  p.ProductName = "Product " + p.ProductName;
  p.Price = 0.95 * p.Price;

  // Call DataLayer.
  return ProductDL.UpdateProduct(p.ID, p.ProductName, p.Quantity, p.Price);
}

dove il ProductDL.UpdateProduct potrebbe aspetto:

public int UpdateProduct
  (
    string productID,
    string productName,
    int productQty,
    float productPrice
    )

E, così via.

Altri suggerimenti

In caso di aggiornamento ObjectDataSource, controllare la raccolta e.InputParameters, i vostri prodotti oggetto deve essere conservato in e.InputParameters [0].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top