ASP.NET: Работа с типами объектов в качестве параметров при обновлении в ObjectDataSource - PullRequest
2 голосов
/ 21 мая 2009

Как вы, ребята, обновляете, скажем, например, FormView с источником ObjectDataSource. DataObjectTypeName - это класс, который я уже пометил атрибутом DataObject. Теперь я хочу настроить процесс обновления и добавить некоторые пользовательские данные в параметр. Что нам для этого нужно?

Пример: У меня есть класс BLL, который назовем его «ProductsBLL» и класс данных «Product».

Я объявляю следующий элемент управления 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>

Учитывая, что метод Update в классе ProductsBLL принимает объект Product в качестве параметра. Теперь, прежде чем произойдет обновление, я хочу добавить пользовательские данные в параметр Product. Как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 21 мая 2009

Я точно не знаю, какой у вас вопрос (вам нужно быть более конкретным), но общий ход такой:

  • Ваш GridView связан с ObjectDataSource.

  • Ваш ObjectDataSource связан со слоем Biz Logic через свойство TypeName - это класс, который будет создан для выполнения операций с данными. (назовите это ProductsBLL например).

  • Также используется свойство DataObjectTypeName, которое представляет собой тип объекта, который извлекается / обновляется / удаляется с помощью BLL. (скажем, Product)

  • Кроме того, он определяет методы в BLL для вызова при каждом действии (UpdateMethod, SelectMethod и т. Д.) (Например, ProductsBLL.UpdateProducts, ProductsBLL.DeleteProducts)

  • Ваш объект BLL затем выполняет пользовательские операции, такие как логика проверки данных, полученных из ObjectDataSource, и вызывает ваш Datalayer для фактического обновления / удаления из базы данных. (скажем, ProductsDataLayer.UpdateProduct())

Если вам нужна дополнительная информация, отредактируйте ваш вопрос, чтобы он был более конкретным.

Редактировать (после редактирования исходного вопроса):


Изменение параметра Product перед обновлением будет простым:

// 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);
}

где ProductDL.UpdateProduct может выглядеть так:

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

И т. Д.

2 голосов
/ 18 июня 2009

В событии обновления ObjectDataSource проверьте коллекцию e.InputParameters, ваш объект Products должен быть сохранен в e.InputParameters [0].

...