页面与用户控件的值传递

前言:

    先抱怨几句,又上班两天,加班气氛渐浓!

    今天项目中一问题:在用户控件中,需要获取表中ID字段,进而通过数据库操作,用GridView展现出来。然后将此用户控件被包含于页面中。问题是:怎么让页面加载时,其所获取的值(ex,通过QueryString),可以传达到用户控件,并且可以同时展现数据?

    我的模糊点在于:

  • 用户控件的淡忘;
  • 对于用户控件和页面传值的不了解(特别是其都有Page_Load(),其顺序如何?);

解析:

     经过查询资料,现在初步探索出利用自定义控件的“属性”附加方法,可以实现值的传递!具体见代码:

首先是WebUserControl的前台代码:

<% @ Control Language = " C# "  AutoEventWireup = " true "  CodeFile = " WebUserControl.ascx.cs "  Inherits = " WebUserControl "   %>
< asp:TextBox ID = " TextBox1 "  runat = " server "  Text  = " yyy " >< / asp:TextBox>
< asp:Label ID = " Label1 "
    runat
= " server "  Text = " Label " >< / asp:Label>


 其次是WebUserControl的后台代码(可见,附加属性):

public   partial   class  WebUserControl : System.Web.UI.UserControl
{
    
// 附加用户控件的属性
     private   string  id;
    
public   string  Id
    {
        
get  {  return  id; }
        
set  { id  =  value; }
    }
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        TextBox1.Text 
=   this .Id;
    }
}


 后来是验证页面的前台代码(附:如何引用用户控件):

<% @ Page Language = " C# "  AutoEventWireup = " true "   CodeFile = " Default.aspx.cs "  Inherits = " _Default "   %>
<% @ Register TagPrefix  = " uc1 "  TagName  = " userControl1 "  Src  = " ~/WebUserControl.ascx "    %>
<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >

< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
    
< title > Untitled Page < / title>
< / head>
< body >
    
< form id = " form1 "  runat = " server " >
    
< div >
    
    
< / div>
     < uc1:userControl1 ID = " userControl11 "  runat = " server "   / >
     < / form>
< / body>
< / html>


 最后是验证页面的后台代码:

public   partial   class  _Default : System.Web.UI.Page 
{
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
       
//  string id = Request.QueryString["id"].ToString();
         string  id  =   " Y001 " ;
        userControl11.Id 
=  id;

    }
}


 附:主旨

     先给用户控件中TextBox赋初值为“yyy 将用户控件包含进页面后,通过页面获取的值,进而传递至用户控件中,即TextBox值重赋为”Y001“;

     由上可见,可以通过附加用户控件属性,实现获取值~

 

 注:由分步调试,可以观察其Page_Load顺序是:先调用页面的Page_Load(),然后调用用户控件的Page_Load()。这样才保证在页面的Page_Load()中对用户控件属性赋值,然后在用户控件的Page_load()中将其属性值取出(此时即可将其使用,进而绑定上述的GridView问题了)。

 

  综述之,用户控件由于使用较少,并未达到熟练程度,以后再加强,呵呵~

 

 

 

 

你可能感兴趣的:(值传递)