国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET2.0中使用數據源控件之參數

2024-07-10 13:03:47
字體:
來源:轉載
供稿:網友
摘要:本文是介紹數據源控件的系列文章中的第二篇。在本文中,nikhil 著重介紹如何添加支持以向針對控件的查詢添加參數。

  數據源控件需要使用參數值來指定需要選擇哪些數據,或者指定如何修改數據以及修改什么數據。通常情況下,頁面包含一些 ui,以定義那些必須在選擇操作中使用的參數,而數據綁定控件提供了參數值來進行插入、更新和刪除操作。但是,在任意一種情況下,都可能同時出現兩種現象。在第 1 部分中,數據源控件揭示了 zipcode 屬性,該屬性可進行聲明性設置,或者以編碼來設置以響應用戶操作。參數被設計為以聲明性(且可擴展)的方式來完成此方案。

  引言

  parameter 基類代表一個通用參數。microsoft visual studio 2005 提供了諸如 querystringparameter 之類的參數,以便將數據從查詢字符串參數請求到數據源中。另一個非常有用的參數是 controlparameter,該參數允許從任一控件屬性中請求數據。如果內置參數類型不能滿足您的要求,則您可以定義自己的參數類型。這樣您就可以使頁面與粘接代碼不相關,而是將該代碼整齊地封裝在參數實現中。

  除了從不同的源中請求值,這些參數還可以跟蹤值的更改情況,并通知這些更改的所屬數據源,進而引發數據源更改通知,最終在數據綁定控件中觸發數據綁定操作。簡而言之,這就是使用 controlparameters 時,主要的聲明性詳細方案所依據的原理。

  示例

  在此將向 weatherdatasource 添加參數功能,然后進一步闡述。

public class weatherdatasource : datasourcecontrol {

    public static readonly string zipcodeparametername = "zipcode";
    ...

    private parametercollection _parameters;

    private parametercollection parameters {
        get {
            if (_parameters == null) {
                _parameters = new parametercollection();
                _parameters.parameterschanged
                   += new eventhandler(this.onparameterschanged);
                if (istrackingviewstate) {
                    ((istatemanager)_parameters).trackviewstate();
                }
            }
            return _parameters;
        }
    }
    ...

    public string getselectedzipcode() {
         if (_parameters != null) {
            parameter zipcodeparameter =
               _parameters[zipcodeparametername];
            if (zipcodeparameter != null) {
                iordereddictionary parametervalues =
                    _parameters.getvalues(context, this);
                return (string)parametervalues[zipcodeparameter.name];
            }
        }

        return zipcode;
    }

    protected override void loadviewstate(object state) {
        object basestate = null;

        if (state != null) {
            pair p = (pair)state;
            basestate = p.first;

            if (p.second != null) {
                ((istatemanager)parameters).loadviewstate(p.second);
            }
        }
        base.loadviewstate(basestate);
    }

    protected override void oninit(eventargs e) {
        page.loadcomplete += new eventhandler(this.onpageloadcomplete);
    }

    private void onpageloadcomplete(object sender, eventargs e) {
        if (_parameters != null) {
            _parameters.updatevalues(context, this);
        }
    }

    private void onparameterschanged(object sender, eventargs e) {
        currentconditionsview.raisechangedevent();
    }

    protected override object saveviewstate() {
        object basestate = base.saveviewstate();
        object parameterstate = null;

        if (_parameters != null) {
            parameterstate = ((istatemanager)_parameters).saveviewstate();
        }

        if ((basestate != null) || (parameterstate != null)) {
            return new pair(basestate, parameterstate);
        }
return null;
    }

    protected override void trackviewstate() {
        base.trackviewstate();
        if (_parameters != null) {
            ((istatemanager)_parameters).trackviewstate();
        }
    }
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江都市| 札达县| 丰都县| 松潘县| 白河县| 平南县| 阿拉尔市| 长寿区| 临江市| 湘潭市| 辰溪县| 玛纳斯县| 遵化市| 库伦旗| 平乡县| 铁岭市| 吉隆县| 新安县| 保康县| 永吉县| 琼海市| 武邑县| 陆丰市| 读书| 潞西市| 左权县| 嵊州市| 平度市| 乡城县| 沧源| 轮台县| 宜君县| 武威市| 天峨县| 安阳县| 错那县| 日土县| 南乐县| 永兴县| 淅川县| 铜陵市|