WEB开发网
开发学院图形图像Flash Silverlight AutoCompleteBox(自动完成输入框控件... 阅读

Silverlight AutoCompleteBox(自动完成输入框控件)使用方法

 2008-12-24 11:54:13 来源:WEB开发网   
核心提示: 讲过的事件“Populating”,不过之前我们还要先创建一个silverlight wcf,如下:当然,Silverlight AutoCompleteBox(自动完成输入框控件)使用方法(8),我们在WCF端还是用到了之前创建的Employee类文件(当然为了避

讲过的事件“Populating”,不过之前我们还要先创建一个silverlight wcf,如下:

Silverlight AutoCompleteBox(自动完成输入框控件)使用方法

当然,我们在WCF端还是用到了之前创建的Employee类文件(当然为了避免冲突改名为:EmployeeInfo)。

另外在服务方法上使用下面代码来实现数据访问:

[ServiceContract(Namespace="")]
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
publicclassAutoCompletedService
{
  [OperationContract]
  publicList<EmployeeInfo>GetEmployeeCollection(stringname)
  {
    List<EmployeeInfo>EmpolyeeList=newList<EmployeeInfo>();
    foreach(EmployeeInfoeiin(fromemployeeinfoinEmployeeInfo.AllExecutives
                   whereemployeeinfo.DisplayName.StartsWith(name)
                   selectemployeeinfo))
    {
      EmpolyeeList.Add(ei);
    }
    returnEmpolyeeList;
  }
} 

通过添加WEB服务引用的方式,系统会为我们创建相应的代码类文件,这里就不多说了。下面是Silverlight

端的程序代码:

voidPage_Loaded(objectsender,RoutedEventArgse)
{
  WCFAutoComplete.IsTextCompletionEnabled=false;
  WCFAutoComplete.SearchMode=AutoCompleteSearchMode.None;
  WCFAutoComplete.Populating+=(s,args)=>
  {
    args.Cancel=true;
    AutoCompletedServiceClientacsc=newAutoCompletedServiceClient();
    acsc.GetEmployeeCollectionCompleted+=newEventHandler<GetEmployeeCollectionCompletedEventArgs>
                          (acsc_GetEmployeeCollectionCompleted);
    acsc.GetEmployeeCollectionAsync(args.Parameter,s);
  };
}

相应的返回数据事件处理代码如下:

voidacsc_GetEmployeeCollectionCompleted(objectsender,GetEmployeeCollectionCompletedEventArgse)
{
  AutoCompleteBoxacb=e.UserStateasAutoCompleteBox;
  if(acb!=null&&e.Error==null&&!e.Cancelled)
  {   
    if(e.Result.Count>0)
    {
      List<string>employeeStrList=newList<string>();
      foreach(EmployeeInfoemployeeinfoine.Result)
      {
        employeeStrList.Add(employeeinfo.FirstName+""+employeeinfo.LastName);
      }
      acb.ItemsSource=employeeStrList;
      acb.PopulateComplete();
    }
  }
}

运行时的效果如下图所示:

Silverlight AutoCompleteBox(自动完成输入框控件)使用方法

当然这里会有一个问题,就是当我对上面的代码“acb.ItemsSource = employeeStrList;”换成:

“acb.ItemsSource = e.Result;”之后,会出现在下面列表中显示的数据是该类的类型type信息,我

想这可能是该控件的一个BUG,即在异步情况下进行数据(源)绑定时信息类型不正确。当然如果您知

道是什么问题并有解决方案的话,不妨通过我,这里表示感谢了。

上一页  3 4 5 6 7 8 

Tags:Silverlight AutoCompleteBox 自动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接