2014-04-17 54 views
0

在ListView控件的內部<ItemTemplate>我正在使用LinkBut​​ton。 當List填充它時,它有一組LinkBut​​ton。鏈接按鈕文本是從使用數據源檢索的記錄中的列生成的。ASP.Net LinkBut​​ton不會在第一封郵件中更新

當我點擊一個LinkBut​​ton時,我需要它在回發期間將文本捕獲到隱藏字段或視圖狀態,以便在回發頁面時它將顯示在Label或TextBox中。

但它不會在第一頁發回。相反,我必須點擊兩次LinkBut​​ton,才能在Label/TextBox中顯示值。

我如何在第一篇文章中完成它?

我已經嘗試過沒有ListView,只使用LinkBut​​ton,如下所示,並得到相同的結果。

protected void LinkButton_Click(object sender, EventArgs e) 
{ 
    LinkButton selectedButton = (LinkButton)sender; 
    HiddenField1.Value = selectedButton.Text; 
    ViewState["LinkButtonText"] = selectedButton.Text; 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(HiddenField1.Value)) 
    { 
     Label1.Text = HiddenField1.Value; 
    } 
    TextBox1.Text = HiddenField1.Value; 

    if (ViewState["LinkButtonText"] != null) 
    { 
     if (!string.IsNullOrEmpty(ViewState["LinkButtonText"].ToString())) 
     { 
      ViewStateTextBox.Text = ViewState["LinkButtonText"].ToString(); 
     } 
    } 
} 

回答

0

那麼,它發生在服務器端方法執行的序列。手動加載頁面,然後按照順序控制點擊方法。而不是像現在使用客戶端JavaScript函數更新隱藏字段LinkBut​​ton控件的OnClientClick,它更新隱藏字段。

0

簡而言之,您每次需要在第一次加載時都需要執行某些操作時才使用它。

Page.IsPostBack的經典用法是數據綁定/控件初始化。這是在ViewState中和了ControlState-堅持

if(!Page.IsPostBack) 
{ 
    //Control Initialization 
    //Databinding 
} 

事情並不需要在每個回發重新創建,所以你爲了避免執行不必要的代碼檢查此條件。

另一個經典用法是獲取和處理查詢字符串參數。您不需要在回發時執行此操作。

相關問題