ASP.NET:Работа с типами объектов в качестве параметров при обновлении в ObjectDataSource

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

Вопрос

Как вы, ребята, обновляете, скажем, например, 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.Как я могу это сделать?

Это было полезно?

Решение

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

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

  • Ваш ObjectDataSource связан с уровнем бизнес-логики через TypeName property - это класс, который будет создан для выполнения операций с данными.(назовите это 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
    )

И так далее.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top