Silverlight 2 (beta1)数据操作(2)——使用ASP.NET Web Service进行数据CRUD操作(下)

前台界面

后台代码

//按钮事件
void saveButton_Click(object sender, RoutedEventArgs e)
{
    if (userName.Text.Trim() == string.Empty)
    {
        errMessage.Foreground = new SolidColorBrush(Colors.Red);
        errMessage.Text = "请输入用户名称!";
        errMessage.Visibility = Visibility.Visible;
        return;
    }
    //调用WebService
    WebServiceProxy.UserManageSoapClient userMgrSoapClient =
        new YJingLee.WebSrv.WebServiceProxy.UserManageSoapClient();
    //创建用户操作
    userMgrSoapClient.CreateUserAsync(userName.Text);
    userMgrSoapClient.CreateUserCompleted +=
        new EventHandler<YJingLee.WebSrv.WebServiceProxy.
            CreateUserCompletedEventArgs>
            (userMgrSoapClient_CreateUserCompleted);
}
void userMgrSoapClient_CreateUserCompleted(object sender,
    YJingLee.WebSrv.WebServiceProxy.CreateUserCompletedEventArgs e)
{
    if (e.Error == null)
    {
        errMessage.Text = "创建用户成功!";
        errMessage.Foreground = new SolidColorBrush(Colors.Blue);
        errMessage.Visibility = Visibility.Visible;
    }
    else
    {
        errMessage.Foreground = new SolidColorBrush(Colors.Red);
        errMessage.Text = e.Error.ToString();
        errMessage.Visibility = Visibility.Visible;
    }
}

查询数据部分

前台界面

我们使用Silverlight 2自带的DataGrid控件绑定数据。前台非常简单,只是一个DataGrid控件,但是前段时间有的同学问DataGrid控件不知怎么弄进来。这里详细说明一下。

第一步:在Silverlight工程中添加引用

第二步:查找System.Windows.Controls.Data程序集,添加进来

第三步:在UserControl中添加这个引用,有智能感知。我将其命名为Data。

在前台编写代码如下

<Button x:Name="reButton" Content="刷新"
        Width="50" Height="30" Grid.Row="0"></Button>
<Data:DataGrid x:Name="userDataGrid" Height="200"
               Width="700" Margin="0,5,0,10"
              AutoGenerateColumns="True"
               VerticalAlignment="Top" Grid.Row="1">
</Data:DataGrid>

后台代码

//显示数据
void ListingControlDisplay(object sender, RoutedEventArgs e)
{
    WebServiceProxy.UserManageSoapClient userMgrSoapClient =
        new YJingLee.WebSrv.WebServiceProxy.UserManageSoapClient();
    userMgrSoapClient.RetrieveUsersAsync();
    userMgrSoapClient.RetrieveUsersCompleted +=
        new EventHandler<YJingLee.WebSrv.WebServiceProxy.
            RetrieveUsersCompletedEventArgs>
               (userMgrSoapClient_RetrieveUsersCompleted);
}
void userMgrSoapClient_RetrieveUsersCompleted(object sender,
 YJingLee.WebSrv.WebServiceProxy.RetrieveUsersCompletedEventArgs e)
{
    if (e.Error == null)
        displayData(e.Result);
}
private void displayData(string xmlContent)
{
    try
    {
        if (xmlContent != string.Empty)
        {
            XDocument xmlUsers = XDocument.Parse(xmlContent);
            var users = from user in xmlUsers.Descendants("User")
                        select new
                        {
                            UserID = Convert.ToInt32
                                      (user.Element("UserID").Value),
                            UserName = (string)
                                      user.Element("UserName").Value
                        };
            List<User> usersList = new List<User>();
            foreach (var u in users)
            {
                User use = new User
                         { UserID = u.UserID, UserName = u.UserName };
                usersList.Add(use);
            }
            userDataGrid.ItemsSource = usersList;
        }
        else
        {
            userDataGrid.ItemsSource = null;
        }
    }
    catch (Exception ex)
    {

        Console.Write(ex.Message);
    }
}
public class User
{
    public int UserID { get; set; }
    public string UserName { get; set; }
}

修改数据部分

前台界面

后台代码

void updateButton_Click(object sender, RoutedEventArgs e)
{
    if (userID.Text.Trim() == string.Empty)
    {
        errMessage.Foreground = new SolidColorBrush(Colors.Red);
        errMessage.Text = "请输入用户ID!";
        errMessage.Visibility = Visibility.Visible;
        return;
    }
    if (userName.Text.Trim() == string.Empty)
    {
        errMessage.Foreground = new SolidColorBrush(Colors.Red);
        errMessage.Text = "请输入用户名称!";
        errMessage.Visibility = Visibility.Visible;
        return;
    }
    WebServiceProxy.UserManageSoapClient userMgrSoapClient =
        new YJingLee.WebSrv.WebServiceProxy.UserManageSoapClient();
    //调用更新用户方法
    userMgrSoapClient.UpdateUserAsync
          (Int16.Parse(userID.Text.Trim()), userName.Text.Trim());
    userMgrSoapClient.UpdateUserCompleted +=
        new EventHandler<YJingLee.WebSrv.WebServiceProxy.
            UpdateUserCompletedEventArgs>
                   (userMgrSoapClient_UpdateUserCompleted);
}
void userMgrSoapClient_UpdateUserCompleted(object sender,
    YJingLee.WebSrv.WebServiceProxy.UpdateUserCompletedEventArgs e)
{
    if (e.Error == null)
    {
        errMessage.Text = "修改用户成功!";
        errMessage.Foreground = new SolidColorBrush(Colors.Blue);
        errMessage.Visibility = Visibility.Visible;
    }
    else
    {
        errMessage.Foreground = new SolidColorBrush(Colors.Red);
        errMessage.Text = e.Error.ToString();
        errMessage.Visibility = Visibility.Visible;
    }
}

删除数据部分

前台界面

后台代码

void deleteButton_Click(object sender, RoutedEventArgs e)
{
    if (userID.Text.Trim() == string.Empty)
    {
        errMessage.Foreground = new SolidColorBrush(Colors.Red);
        errMessage.Text = "请输入用户ID!";
        errMessage.Visibility = Visibility.Visible;
        return;
    }
    WebServiceProxy.UserManageSoapClient userMgrSoapClient =
        new YJingLee.WebSrv.WebServiceProxy.UserManageSoapClient();
    //调用删除方法
    userMgrSoapClient.DeleteUserAsync
          (Int16.Parse(userID.Text.Trim()));
    userMgrSoapClient.DeleteUserCompleted+=
        new EventHandler<YJingLee.WebSrv.WebServiceProxy.
            DeleteUserCompletedEventArgs>
                  (userMgrSoapClient_DeleteUserCompleted);
}

void userMgrSoapClient_DeleteUserCompleted(object sender,
    YJingLee.WebSrv.WebServiceProxy.DeleteUserCompletedEventArgs e)
{
    if (e.Error == null)
    {
        errMessage.Text = "删除用户成功!";
        errMessage.Foreground = new SolidColorBrush(Colors.Blue);
        errMessage.Visibility = Visibility.Visible;
    }
    else
    {
        errMessage.Foreground = new SolidColorBrush(Colors.Red);
        errMessage.Text = e.Error.ToString();
        errMessage.Visibility = Visibility.Visible;
    }
}

整合程序

在Page.xaml页面中布局,并引入用户控件,添加4个HyperlinkButton ,单击事件用户控件在中间区域显示。例如下面一个按钮事件:

deleteCtl.Visibility = Visibility.Visible;
entryCtl.Visibility = Visibility.Collapsed;
listingCtl.Visibility = Visibility.Collapsed;
editCtl.Visibility = Visibility.Collapsed;

最终效果图如下所示:

结语

利用这个实例我们学习了在Silverlight 2中使用ASP.NET Web Service进行数据CRUD操作,这里有一些细节没有完善,比如输入框的验证问题等。下一篇我们利用ADO.NET Data Service来操作数据。

版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载。

时间: 2024-11-02 01:28:28

Silverlight 2 (beta1)数据操作(2)——使用ASP.NET Web Service进行数据CRUD操作(下)的相关文章

Silverlight 2 (beta1)数据操作(1)——使用ASP.NET Web Service进行数据CRUD操作(上)

目录 导言 软件需求 在SQL 2005中创建数据库 在Visual Studio 2008中创建 Silverlight 2 (beta1)工程 在ASP.NET工程里创建Web Service 在Silverlight 2 (beta1)工程中引用ASP.NET Web Service 添加数据部分 查询数据部分 修改数据部分 删除数据部分 整合程序 结语 例子下载 导言 Silverlight 2支持JSON.Web Service.WCF以及Sockets等新特性对数据CRUD操作,这个

HYAppFrame数据库开发入门(ASP.NET Web Service)

本节主要讲解服务器端ASP.NET Web Service数据库配置和操作,客户端数据库操作. HYAppFrame项目地址:https://sourceforge.net/u/chinahysoft/profile/ 1.    服务器端数据库操作 HYAppFrame服务器端通过ASP.NET Web Service连接数据库. 数据库连接配置 在文件Web.config配置数据库,需设置数据库服务器地址Data Source.数据库名称Initial Catalog.访问帐号User Id

Win Form + ASP.NET Web Service 文件上传下载--HYAppFrame

本章节主要讲解HYAppFrame服务器端如何ASP.NET Web Service实现文件(含大文件)上传,WinForm客户端如何下载文件. 1    服务器端文件上传 1.1 上传文件 函数FileUpload(stringfileFullPath, byte[] file)用于上传文件,生成文件前检查文件路径所在文件夹是否存在,不存在则首先创建文件夹. [WebMethod(EnableSession = true,Description = "上传文件")] public i

Part 17 Consuming ASP NET Web Service in AngularJS using $http

Here is what we want to do1. Create an ASP.NET Web service. This web service retrieves the data from SQL Server database table, returns it in JSON formt.2. Call the web service using AngularJS and display employee data on the web page Step 1 : Create

在 Visual Studio 2010 中创建 ASP.Net Web Service

第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含一个站点配制文件(Web.config)的空站点,其余的什么也没有. 我们在Visual Studio 2010的Solution Explorer中,选中当前的这个project,添加新项目(右键菜单:Add --> New Item),选择“Web Service”这种类型: 看到这里读者应该就

ASP.NET Web Service中使用Session 及 Session丢失解决方法 续

原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Session,需要对Web Method做如下处理 [WebMethod(EnableSession = true)]public void usingSession(){    Session["Name"] = "Name";} 如果不加EnableSession = tru

微软实战训练营(X)重点班第(1)课:SOA必备知识之ASP.NET Web Service开发实战

微软实战训练营 上海交大(A)实验班.(X)重点班 内部课程资料 链接:http://pan.baidu.com/s/1jGsTjq2 密码:0wmf <微软实战训练营(X)重点班第(1)课:SOA必备知识之ASP.NET Web Service开发实战>微软实战训练营 上海交大(A)实验班.(X)重点班 .(E)英语口语班http://54peixun.com/MSTrainingCamp/index.html 微软实战训练营(X)重点班第(1)课:SOA必备知识之ASP.NET Web S

sharepoint 2010 创建自定义的ASP.NET Web Service (上)

项目背景 根据客户需求在SharePoint 2010 中创建自定义的ASP.NET Web Service可以分为3种方式(我所知道的).废话少说,下面一一列举: 创建方式 MSDN 官方博客自己的一个创建ASP.NET Web Service.http://msdn.microsoft.com/zh-cn/library/ms464040(v=office.14).aspx 但是它不推荐这种方式. 通过创建类库项目,使类库项目包装webservice. MSDN推荐使用的方式,通过WCF创建

ASP.NET Web Service 标准SOAP开发案例代码(自定义验证安全头SOAPHeader)

using System.Xml;using System.Xml.Serialization;using System.Web.Services.Protocols;using System.Configuration;using Service.Common.Constant; namespace Service.Common.Core.Head.Safe{    /// <summary>    /// 为了安全,自定义的Soap头    /// </summary>