Я создаю веб-приложение с многочисленными источниками данных. Я использовал объектный источник данных, чтобы позволить мне выполнить некоторую фильтрацию данных и затем привязать к элементу управления. Я еще не очень много знаю об этом объекте, но мне интересно, когда я добавляю данные в этот элемент управления, каков наилучший способ передачи этого обратно в мою веб-службу, которая ожидает набор данных?
Возможно, объектный источник данных не лучший способ сделать это. Структура заключается в том, что я вызываю веб-сервис, который передает обратно набор данных, а затем, если в набор данных были внесены изменения, мне нужно вернуть его через веб-сервис для обновления базы данных. Мне также нужно иметь возможность фильтровать содержимое, основываясь на некотором взаимодействии с пользователем, где я передавал выражение фильтра моей строки фильтра, чтобы вернуть подмножество данных. Есть ли лучший способ сделать это, чем я делаю это выше?
спасибо за помощь
РЕДАКТИРОВАТЬ: это помогает?
Код позади
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace UI
{
public partial class SelectAddProducts : System.Web.UI.Page
{
private WebService.AppSoapClient _objWebService;
private UI.User _clsUser;
protected override void OnInit(EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session.Count >= 1)
{
SetupSessionVariables();
}
else
{
if (_clsUser == null)
{
Response.Redirect("Login.aspx");
}
}
}
}
protected void SetupSessionVariables()
{
//ObjectDataSource1.
_objWebService = new UI.WebService.AppSoapClient();
}
protected void gvProducts_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Insert" && Page.IsValid)
{
ObjectDataSource1.Insert();
}
}
protected void btnAddProduct_Click(object sender, EventArgs e)
{
}
}
}
Код страницы:
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true"
CodeBehind="SelectAddProducts.aspx.cs" Inherits="UI.SelectAddProducts" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete"
InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
TypeName="DBLib.Datasets.ProductsTableAdapters.ProductsTableAdapter"
UpdateMethod="Update">
<DeleteParameters>
<asp:Parameter Name="Original_ProductID" Type="Int32" />
<asp:Parameter Name="Original_Name" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Original_ProductID" Type="Int32" />
<asp:Parameter Name="Original_Name" Type="String" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Name" Type="String" />
</InsertParameters>
</asp:ObjectDataSource>
<asp:GridView ID="gvProducts" runat="server" AutoGenerateColumns="False"
CellPadding="4" DataKeyNames="ProductID" DataSourceID="ObjectDataSource1"
ForeColor="#333333" GridLines="None" ShowFooter="True"
style="margin-right: 39px" Width="183px"
onrowcommand="gvProducts_RowCommand">
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:TemplateField HeaderText="ProductID" InsertVisible="False"
SortExpression="ProductID">
<EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ProductID") %>'> </asp:Label>
</EditItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAddProduct" runat="server" CommandName="Insert"
onclick="btnAddProduct_Click" Text="Add" />
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("ProductID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name" SortExpression="Name">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtNewProductName" Display="Dynamic"
ErrorMessage="You must enter a name for the new product."></asp:RequiredFieldValidator>
<asp:TextBox ID="txtNewProductName" runat="server"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
</asp:Content>