C#ASP.NET母版页和子页面 - 将子页面中的字符串分配到母版页

时间:2013-01-04 02:34:03

标签: c# asp.net inheritance master-pages radgrid

这是我的子页面文件和我的母版页文件的一部分。我将传递strName,从子页面到母版页。我想在子页面中访问此母版页变量,并在页面加载之前或之前将子页面变量分配给母版页。我经常得到最后一个选中的值但不是当前值

例如,鉴于记录显示玛丽,约翰,彼得,

如果我点击Mary,则显示无 如果我点击彼得,请告诉玛丽 如果我舔约翰,请表明彼得

您能否建议并说明如何解决此问题?

以下是我的代码

   protected void grdNameSelection_ItemCommand(object sender, GridCommandEventArgs e) 
    {
        RadGrid CurrentGrid = (RadGrid)sender;
        GridData GridSource = PageSource.GrdSrcNameSelection;
        String a = GridSource.state.ToString();

        if (e.CommandName == "SelectCurrent")
        {
            foreach (GridDataItem item in CurrentGrid.SelectedItems)
            {

                RowData row = (RowData)GridSource.Current[item.DataSetIndex];
                string Name = row.Name;
            }
        }
    }
 protected void grdCompanySelection_PreRender(object sender, EventArgs e)
    {
        UserSession.Instance.CurrentName= Name ;

        RadGrid CurrentGrid = (RadGrid)sender;
        GridData GridSource = PageSource.GrdSrcCompanySelection;
        CommandButtonDisplay(GridSource, CurrentGrid);

    }

母版页

 protected void Page_init(object sender, EventArgs e)
    {

    }
    protected void Page_Load(object sender, EventArgs e)
    {
        lblHeader.Text = UserSession.Instance.CurrentName;

        if (!Page.IsPostBack)
        {  ,,,,

1 个答案:

答案 0 :(得分:3)

不幸的是,MS没有提供很好的方法。你基本上有两个选择。

  1. 从子页面访问控件,然后设置您需要的任何值(示例中的子页面为this):

    Label label1 = this.Master.FindControl("Label1") as Label;
    label1.Text = "Hello";
    
  2. 首选在母版页上提供某种设置器。这是“更安全”,因为子页面不直接操纵主控件。

     MyType master = this.Master as MyType;
     if(master == null)
        return;
    
     master.MyProperty = "something";
    
     // In master page
     public string MyProperty
     {
        get { return label.Text; }
        set { label.Text = value; }
     }