• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

ASP.NET中设计带事件定制控件(2)

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 13次 | 进入软件测试论坛讨论

领测软件测试网      我将把控件命名为StoreSelector.ascx。第一步是在表单上添加DropDownList控件。
  
  
  
  (图2)
  
     现在就该为该控件“布线”了。创建一个Dataset类的对象:
  
   #code
   private DataSet data;
   #end code
  
     创建向下拉列表中填写数据的BindData功能:
  
   #code
   private void BindData()
   {
    data = new DataSet();
    SqlConnection cnn = new SqlConnection("Data Source=(local);Initial
    Catalog=pubs;Integrated Security=SSPI");
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand("SELECT stor_id, stor_name,stor_address, city, state, zip FROM stores", cnn);
    adapter.Fill(data, "stores");
    storeList.DataSource = data;
    storeList.DataMember = "stores";
    storeList.DataTextField = "stor_name";
    storeList.DataBind();
    Session.Add("Data", data);
   }
   #end code
  
     我在Session变量上增加了DataSet对象,以使数据在对话存在期间以及控件事件触发期间传递数据时都是可以访问的。注意,要确保Page_OnLoad事件的正确:
  
   #code
   private void Page_Load(object sender, System.EventArgs e)
   {
    if(!Page.IsPostBack)
    {
     BindData();
    }
   }
   #end code
  
     现在我们将新控件拖到Default.ASPx网页上,并运行该项目。
  
  
  
  (图3)
  
  
  
  (图4)
  
     很简单是吧?下面就该是技巧比较高的部分了。我们希望在Default.aspx上添加几个标签,反映不断变化的商店。我们希望每个标签显示现在选择的商店中的一列,在这里我们就需要为StoreSelector控件和事件参数类创建一个定制事件。下面我们先创建Event Argument Class(StoreSelectorCommandEventArgs.cs):
  
   #code
   public class StoreSelectorCommandEventArgs
   {
    private string _stor_id;
    private string _stor_name;
    private string _stor_address;
    private string _city;
    private string _state;
    private string _zip;
  
    public StoreSelectorCommandEventArgs(string stor_id, string stor_name,
    string stor_address, string city, string state, string zip)
    {
     _stor_id = stor_id;
     _stor_name = stor_name;
     _stor_address = stor_address;
     _city = city;
     _state = state;
     _zip = zip;
    }
  
    public string stor_id{ get{ return _stor_id; } }
    public string stor_name{ get{ return _stor_name; } }
    public string stor_address{ get{ return _stor_address; } }
    public string city{ get{ return _city; } }
    public string state{ get{ return _state; } }
    public string zip{ get{ return _zip; } }
   }
   #end code
  
     该类的目的是为了处理定义事件参数的“e”变量,我们要做的仅仅是创建了其中的一个。下面是定义如何处理事件的代理类(StoreSelectorCommandEventHandler.cs):
  
   #code
   public delegate void StoreSelectorCommandEventHandler(object sender,
   StoreSelectorCommandEventArgs e);
   #end code
  
     下面是产生的文件:
  
  
  (图5)
  

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网