2012-05-28 97 views
0

我希望能夠隱藏Formview上的某些項目控件。我已經定義了一種方法,當滿足某些要求時,我設置的Add,UpdateDelete鏈接按鈕將不會顯示在我的Formview中。我用來實現此目的的代碼與下面顯示的代碼相同。這在初始顯示時正常工作。使用頁面索引事件在Formview中隱藏Linkbutton控件

但是,當使用分頁控件時,以及另一個項目在Formview中顯示時,鏈接按鈕再次變爲可見。

我一直在使用這兩種FormView1_PageIndexChanging_PageIndexChanged事件再次隱藏了LinkBut​​ton,按以下方式嘗試:

protected void FormView1_PageIndexChanged(object sender, EventArgs e) 
    { 
     // Check to see if PDP requirement has been removed 
     if (txtStatusMessages.Text == "PDP Required has been set to False for this User so PDP cannot be updated or signed off.") 
     { 
      Control lb_n = FormView1.FindControl("LinkButton_New"); 
      lb_n.Visible = false; 
      Control lb_e = FormView1.FindControl("LinkButton_Edit"); 
      lb_e.Visible = false; 
      Control lb_d = FormView1.FindControl("LinkButton_Delete"); 
      lb_d.Visible = false; 
     } 
    } 

我意識到檢查文本框的內容以隱藏控件的想法是遠非理想;但在這一點上,我只想確保我可以使用此方法隱藏項目控件。

當使用調試器來運行此代碼時,使用尋呼機按鈕觸發事件。可見屬性正確地從true更改爲false。但是,鏈接按鈕仍然可見。

有誰知道爲什麼這不按預期工作?

在此先感謝, 加里。

回答

0

我似乎已經解決了這個問題。

最初我嘗試使用FormView1_ModeChanging,它允許我取消從ReadOnly到Edit的模式改變(例如,點擊Edit linkbutton)。這工作,但意味着linkbuttons仍然可見。

當再看這個問題時,我發現雖然我可以將Linkbutton可見屬性設置爲false,但它們正在有效地重置。這讓我覺得我的問題是由於事件排序(可能是錯誤的使用條款),並且刷新了Formview覆蓋了我的更改。

因此,我添加了一個新的HiddenField來存儲編輯允許的類型數據,這將根據用戶是否應該能夠更新數據項來設置。然後我和PreRender事件中使用它,如下所示:

protected void FormView1_PreRender(object sender, EventArgs e) 
    { 
     if (hfEditAllowed.Value == "false") 
     { 
      Control lb_n = FormView1.FindControl("LinkButton_New"); 
      lb_n.Visible = false; 
      Control lb_e = FormView1.FindControl("LinkButton_Edit"); 
      lb_e.Visible = false; 
      Control lb_d = FormView1.FindControl("LinkButton_Delete"); 
      lb_d.Visible = false; 
     } 
    } 

這可能不是一個理想的解決方案,但允許我根據需要管理我了LinkBut​​ton的顯示。

希望這些信息對其他人有用! Gary。