科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件ASP.NET2.0中使用数据源控件基础知识(2)

ASP.NET2.0中使用数据源控件基础知识(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

数据源控件是 Microsoft Visual Studio 2005 中引入的一种新型服务器控件,它们是数据绑定体系结构的一个关键部分,能够通过数据绑定控件来提供声明性编程模型和自动数据绑定行为。

作者:Nikhil Kothari 来源:MSDN  2007年9月2日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
下一步是实现数据源视图本身。此特定示例仅提供了 SELECT 级功能(这只是最低要求,也是在此方案中唯一有用的功能)。

private sealed class WeatherDataSourceView : DataSourceView {

private WeatherDataSource _owner;

public WeatherDataSourceView(WeatherDataSource owner, string viewName)

: base(owner, viewName) {

 _owner = owner;

}

protected override IEnumerable ExecuteSelect(

 DataSourceSelectArguments arguments) {

arguments.RaiseUnsupportedCapabilitiesError(this);

Weather weatherObject = GetWeather();

return new Weather[] { weatherObject };

 }

 internal Weather GetWeather() {

string zipCode = _owner.ZipCode;

if (zipCode.Length == 0) {

 throw new InvalidOperationException();

}

 WeatherService weatherService = new WeatherService(zipCode);

 return weatherService.GetWeather();

}

internal void RaiseChangedEvent() {

 OnDataSourceViewChanged(EventArgs.Empty);

}

}


默认情况下,DataSourceView 类从诸如 CanUpdate 等的属性返回 false,而从 Update 和相关方法抛出 NotSupportedException。在此,在 WeatherDataSourceView 中唯一需要做的就是替代抽象的 ExecuteSelect 方法,返回包含“选定”天气数据的 IEnumerable。在实现过程中,使用了帮助程序 WeatherService 类,该类仅使用 WebRequest 对象来查询 weather.com(英文),方法是使用所选的邮政编码(这没什么特别的)。

您可能注意到了,ExecuteSelect 被标记为受保护。数据绑定控件实际调用的是在回拨中传递的公共(和密封)Select 方法。Select 的实现会调用 ExecuteSelect,并调用回拨与得到的 IEnumerable 实例。这种模式非常古怪。这其中有一个原因,此系列随后的文章中将会加以说明。请稍候...

下面是该用法的示例:

Zip Code: <asp:TextBox runat="server" id="zipCodeTextBox" />

<asp:Button runat="server" onclick="OnLookupButtonClick" Text="查找" />

<hr />

<asp:FormView runat="server" DataSourceID="weatherDS">

<ItemTemplate>

<asp:Label runat="server"

Text='<%# Eval("Temperature", "当前温度是 {0}。") %>' />

</ItemTemplate>

</asp:FormView>

<nk:WeatherDataSource runat="server" id="weatherDS" ZipCode="98052" />

<script runat="server">

private void OnLookupButtonClick(object sender, EventArgs e) {

weatherDS.ZipCode = zipCodeTextBox.Text.Trim();

}

</script>



此代码设置了邮政编码来响应用户输入,这会使数据源发出更改通知,从而使绑定的 FormView 控件执行数据绑定并更改显示。

现在,数据访问代码就被封装在数据源控件中。此外,通过此模型,weather.com(英文)能够发布一个组件,该组件还可以封装特定于其服务的详细信息。但愿它会好用。此外,抽象的数据源界面允许 FormView 仅针对天气数据进行工作。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章