页面与用户控件的值传递

前言:

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

    今天项目中一问题:在用户控件中,需要获取表中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问题了)。

 

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

 

 

 

 

posted @ 2010-04-20 23:40  Youngman  阅读(5524)  评论(0编辑  收藏  举报