中超

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

2019-12-02 18:25:20来源:励志吧0次阅读

下一步是实现数据源视图本身。此特定示例仅提供了 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 仅针对天气数据进行工作。

查看本文来源

成都治疗早泄方法
佛山好的癫痫病医院
南阳癫痫病
武汉黄浦中西医结合医院邱清平
武汉做近视手术的医院
分享到: