2016-04-14 1 views
1

テキストの入力をbuttonclickに保存すると、ページのリロードでこれらの値を使用してコンテンツの一部を再作成できますか? 私はviewStateを使用しようとしましたが、ブレークポイントを使用しているときは常にpage_loadでnullと表示されます。ボタンを押したときにその変数を使用するbuttonclickのテキストボックスからの文字列を格納

ボタンのクリック:

protected void LoadLifeLineBtn_Click(object sender, EventArgs e) 
{ 
    ViewState["lifelineID"] = Convert.ToInt32(TextBox1.Text); 
    ViewState["phaseid"] = Convert.ToInt32(TextBox2.Text); 
    this.Page_Load(); 
} 

そして、あなたのボタンは、このイベントにまで配線されていると仮定すると、相続人の私をPage_Load

int lifelineid; 
int phaseid; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    hideAndShow(); 
    if (!IsPostBack) 
    { 
     lifelineid = 22222; 
     phaseid = 1; 
     FillFaseTable(PhaseMainTable, phaseid, lifelineid); 
     PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor"; 
    } 
    else if (IsPostBack) 
    { 
     if (ViewState["lifelineid"] != null) 
     { 
      lifelineid = (int)ViewState["lifelineid"]; 
     } 
     if (ViewState["phaseid"] != null) 
     { 
      phaseid = (int)ViewState["phaseid"]; 
     } 
     FillFaseTable(PhaseMainTable, phaseid, lifelineid); 
     PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor"; 
    } 
} 
+0

これは以前はthis.Page_load(null、null)が必要でした。 LoadLifeLineBtnでthis.Page_loadを使用したのは、viewstateの値を設定しなければならないためですが、page_loadの実行が終了していた(buttonclickの前に実行していたため) – svennand

+1

'else if(IsPostBack ) 'ブロックしてから、' this.Page_Load() 'を呼び出す代わりにそのメソッドを呼び出してください。実際には最後の2行だけが必要です。 – mshsayem

+0

はい!それはうまくいった!ありがとう:) – svennand

答えて

0

<asp:Button ID="LoadLifeLineBtn" runat="server" OnClick="LoadLifeLineBtn_Click"></asp:Button> 

あなたが周りにこれを変更することができるはずですコード内でよりスムーズなフローを得るためのビット。

protected void LoadLifeLineBtn_Click(object sender, EventArgs e) 
{ 
    hideAndShow(); 

    int lifelineID = Convert.ToInt32(TextBox1.Text); 
    int phaseid = Convert.ToInt32(TextBox2.Text); 

    FillFaseTable(PhaseMainTable, phaseid, lifelineid); 
    PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor"; 
} 

ページが最初に

protected void Page_Load(object sender, EventArgs e) 
{ 
    hideAndShow(); 
    if (!IsPostBack) 
    { 
     lifelineid = 22222; 
     phaseid = 1; 
     FillFaseTable(PhaseMainTable, phaseid, lifelineid); 
     PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor"; 
    } 
} 

をロードしたときに今の理由はときLoadLifeLineBtn_Click火災、あなたはその時点で必要なものをやるとPage_Loadイベントを呼び出すことができないということです処理するために、あなたのPage_Loadイベントを再編成直接。

0

LoadLifeLineBtnボタンをクリックすると、コード内で何が起こっているのかを少し説明するために2番目の回答が追加されます。あなたがLoadLifeLineBtnをクリックすると

、それはポストバックを作成し、TextBox1TextBox2に入力された値がすでにViewStateの一部となるLoadLifeLineBtn_Clickイベントが発生します。

コードでは、これに変更することができます。ViewStateを手動で設定せずに、意図どおりに実行する必要があります。

protected void Page_Load(object sender, EventArgs e) 
{ 
    int lifelineid; 
    int phaseid; 

    hideAndShow(); 
    if (!IsPostBack) 
    { 
     lifelineid = 22222; 
     phaseid = 1; 
    } 
    else 
    { 
     lifelineID = Convert.ToInt32(TextBox1.Text); 
     phaseid = Convert.ToInt32(TextBox2.Text); 
    } 

    FillFaseTable(PhaseMainTable, phaseid, lifelineid); 
    PhasePanel.CssClass = "panel col-lg-2 col-md-2 col-xs-2 Phase1BackgroundColor"; 
} 
関連する問題