CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

在webform中,在一个用户定义控件中调用另一个用户定义控件中的方法,应该如何处理?

楼主rice139301(大米)2003-09-03 18:44:21 在 .NET技术 / ASP.NET 提问

在我的webform中有两个用户控件,一个是“人员列表的treeview”,一个是“人员信息的DataGrid”。我在人员信息的DG用户控件中写了一些方法用于显示数据等。现在我在人员列表用户控件中,想将选择的人员编码,传递给人员信息DataGrid中的显示数据方法,应该如何作。或者说,我直接想在“人员列表用户控件”中调用“人员信息DG用户控件”中的方法,应该如何处理? 问题点数:20、回复次数:10Top

1 楼rice139301(大米)回复于 2003-09-03 20:02:17 得分 0

用户对象1:workbrowse.ascx  
  //***  
  private   void   DataGrid1_SelectedIndexChanged(object   sender,   System.EventArgs   e)  
  {  
   
  }  
   
  private   void   DataGrid1_PageIndexChanged(object   source,   System.Web.UI.WebControls.DataGridPageChangedEventArgs   e)  
  {  
   
  }  
  public   void   DataBrowse(String   employeestr)  
  {  
  SqlConn   conn   =   new   SqlConn();  
  conn.Open();  
   
   
  SqlDataAdapter   da   =   new   SqlDataAdapter("select   *   from   t_work_log   where   employee_code='"+employeestr+"'",conn.constr);  
  DataSet   ds   =   new   DataSet();  
  da.Fill(ds,"t_work_log");  
  DataGrid1.DataSource   =   ds.Tables["t_work_log"];  
  DataGrid1.DataBind();  
   
  conn.Close();  
   
  }  
   
  private   void   DataGrid1_ItemDataBound(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
   
  }  
  用户对象2:treeview.ascx  
  //***  
  public   abstract   class   treeview   :   WorkBrowse  
   
  Session["employee_code"]   =   newemployecode;  
  //页面刷新后再执行DataBrowse(Session["employee_code"].ToString());  
  base.DataBrowse(newemployecode);Top

2 楼rice139301(大米)回复于 2003-09-03 20:04:15 得分 0

用户对象2:treeview.ascx  
  //***  
  public   abstract   class   treeview   :   WorkBrowse  
  private   void   TreeView1_SelectedIndexChange(object   sender,   Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs   e)  
  {  
  //选择某员工节点时,DG中数据进行检索  
  Microsoft.Web.UI.WebControls.TreeNode   mynode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex);  
   
  String   newemployecode   =   mynode.ID.ToString();  
  Session["employee_code"]   =   newemployecode;  
  //页面刷新后再执行DataBrowse(Session["employee_code"].ToString());  
  base.DataBrowse(newemployecode);  
  }  
  此时运行报错如下:  
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.NullReferenceException:   未将对象引用设置到对象的实例。  
   
  源错误:    
   
   
  行   42:   private   void   InitializeComponent()  
  行   43:   {  
  行   44:   this.DataGrid1.PageIndexChanged   +=   new   System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);  
  行   45:   this.DataGrid1.ItemDataBound   +=   new   System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);  
  行   46:   this.LinkButton1.Click   +=   new   System.EventHandler(this.LinkButton1_Click);  
     
   
  源文件:   workbrowse.ascx.cs         行:   44    
  //************************************************  
  为什么?  
   
   
  }  
   
  Top

3 楼rice139301(大米)回复于 2003-09-04 11:42:51 得分 0

self   up!Top

4 楼chnking(kent)回复于 2003-09-04 11:50:23 得分 20

在这两个控件的容器aspx页面中,通过“人员列表的treeview”公开的属性取得已选择的人员编码,然后调用“人员信息的DataGrid”中一个公开的根据人员编码获取数据并绑定datagrid的方法:GetAndBind(string   id).  
  两个控件之间不用直接发生关系的。Top

5 楼rice139301(大米)回复于 2003-09-04 12:00:13 得分 0

楼上说的,我都做了,问题是现在我想在用户选择treeview中的人员编码时,DG中的信息发生检索操作。这个代码我现在是写在treeview中的,我现在无法调用到"人员信息"控件中的GetandBind()这个方法。Top

6 楼rice139301(大米)回复于 2003-09-04 12:12:49 得分 0

同志们帮帮忙呀,很着急呀Top

7 楼chnking(kent)回复于 2003-09-04 12:31:51 得分 0

“这个代码我现在是写在treeview中的”,把这部分代码提出来,放到aspx页面中,然后由aspx页面的代码把选择的人员代码,或已经根据这个代码取得的数据源传给DGTop

8 楼rice139301(大米)回复于 2003-09-04 12:53:23 得分 0

你真高呀,但是我实在想不明白应该如何将treeview中的TreeView1_SelectedIndexChange()方法提到aspx中。可否贴一段code。thanks!Top

9 楼chnking(kent)回复于 2003-09-04 13:17:59 得分 0

不是说要你将TreeView1_SelectedIndexChange()提到aspx中,而是在TreeView1_SelectedIndexChange()中会进行选择后的处理,在你这个例子中主要就是获得已选人员代码。我想你的这个“人员列表的treeview”应该公开一个属性,就是已选人员代码。你在TreeView1_SelectedIndexChange()中更新这个已选人员代码属性,这样在aspx就能通过已选人员代码属性来获取到你选择的人了。  
  明白?Top

10 楼chnking(kent)回复于 2003-09-04 13:21:13 得分 0

你的思路有问题,用户控件作为一个独立的组件,它不知道将会被放置到什么地方,以及它周围的环境是什么,你不能想着在一个控件中去直接访问另一个控件,因为它周围有什么你不知道。  
  控件应该通过公开自己的属性和方法来同外界交换信息,根据外界提供的信息完成自己的既定任务。Top

相关问题

  • 请问如何调用自定义控件中的click事件?
  • 在html文件怎么调用用户自定义控件
  • 自定义控件中,属性方法的调用?
  • ——————————————自定义控件调用JC出错求教,代码如下————————————
  • 自定义控件间的数据调用
  • 请问:用户控件或自定义控件怎么调用数据库?
  • 多次调用自定义控件时,控件内变量的取值问题~~~~
  • ◎如何在自定义的控件中调用使用这个自定义控件的主窗体的方法?◎
  • 怎样定义一个公用函数,让所有控件自动调用它?
  • 如何在OCX控件定义的方法中实现缺省参数调用?

关键词

  • 控件
  • 代码
  • 用户
  • 属性
  • 编码
  • datagrid
  • 页面
  • 数据
  • 选择
  • 信息

得分解答快速导航

  • 帖主:rice139301
  • chnking

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo