Обновить базу данных через веб-сервис? - PullRequest
0 голосов
/ 17 мая 2011

Я создаю веб-приложение с многочисленными источниками данных. Я использовал объектный источник данных, чтобы позволить мне выполнить некоторую фильтрацию данных и затем привязать к элементу управления. Я еще не очень много знаю об этом объекте, но мне интересно, когда я добавляю данные в этот элемент управления, каков наилучший способ передачи этого обратно в мою веб-службу, которая ожидает набор данных?

Возможно, объектный источник данных не лучший способ сделать это. Структура заключается в том, что я вызываю веб-сервис, который передает обратно набор данных, а затем, если в набор данных были внесены изменения, мне нужно вернуть его через веб-сервис для обновления базы данных. Мне также нужно иметь возможность фильтровать содержимое, основываясь на некотором взаимодействии с пользователем, где я передавал выражение фильтра моей строки фильтра, чтобы вернуть подмножество данных. Есть ли лучший способ сделать это, чем я делаю это выше?

спасибо за помощь

РЕДАКТИРОВАТЬ: это помогает?

Код позади

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...