如何在页面获取页面控件的值,并作为参数传递

如题所述

第1个回答  推荐于2017-12-15
  解析:

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

  首先是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问题了)。本回答被网友采纳
相似回答