1

これは、それぞれ子ページ ファイルとマスター ページ ファイルのセクションです。子ページからマスター ページに strName を渡します。子ページでこのマスター ページ変数にアクセスし、ページの読み込み時またはその前に子ページ変数をマスター ページに割り当てます。最後に選択した値を取得することがよくありますが、現在の値は取得しません

たとえば、レコードが示している場合、Mary、John、Peter、

Mary をクリックすると、Peter をクリックすると何も表示されず、John をクリックすると Mary が表示され、Peter が表示されます

この問題を解決する方法を提案し、示していただけますか?

以下は私のコードです

   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)
        {  ,,,,
4

1 に答える 1

3

残念ながら、MS はこれを行うための非常に良い方法を提供していません。基本的に 2 つのオプションがあります。

  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; }
     }
    
于 2013-01-04T02:41:42.823 に答える