2011-08-24 34 views
1

我不知道如何在GridViewEdit內編輯一個LinkBut​​ton的知名度:如何編輯在C#中GridViewEdit內LinkBut​​ton的知名度

我有一個名爲「lbtnActivateConfig」在GridView的ItemTemplate中的LinkBut​​ton的我ASPX-文件:

<ItemTemplate> 
    <asp:LinkButton ID="lbtnActivateConfig" runat="server" 
     OnClick="GridViewDeactivate" Visible="false">Deaktivieren 
    </asp:LinkButton> 
</ItemTemplate> 

現在我想改變的LinkBut​​ton的知名度INSITE此方法:

protected void GridViewEdit(object sender, GridViewEditEventArgs e) 
    { 
     GridViewRow row = this.ConfigGridView.Rows[e.NewEditIndex]; 

     LinkButton buttonActivate = (LinkButton)ConfigGridView.Rows[row.RowIndex].FindControl("lbtnActivateConfig"); 
     buttonActivate.Visible = true; 
    } 

在調試它捕獲LinkBut​​ton的一個似乎爲s它是可見的。但LinkBut​​ton仍然不可見。

如果我將該按鈕更改爲aspx-File中的可見內容並嘗試在該方法中更改它,這也是一樣的。

對我來說,似乎aspx-File總是在最後執行並覆蓋方法中的更改。這是正確的嗎?我怎樣才能改變方法內部的可見性?有任何想法嗎?

謝謝你,再見!

+0

你是否關閉了viewstate? –

+0

@Christoph:我知道你是新人。歡迎來到堆棧溢出!在您提出的每個問題上,如果有任何答案能幫助您,請點擊該答案旁邊的向上箭頭以提醒他們。如果答案回答了您的問題,請點擊該問題旁邊的大檢查標記爲答案答案。有關更多信息,請參閱[Stack Overflow常見問題](http://stackoverflow.com/faq)。 –

+0

感謝您的光臨。 ;)我想我理解這個系統,我正在閱讀多年以來的stackoverflow。 @Ben:在這種情況下,我沒有使用ViewState。與我的問題有什麼關係,我該如何關閉它? –

回答

1

嘗試以下操作:

protected void GridViewEdit(object sender, GridViewEditEventArgs e) 
{ 
    GridViewRow row = this.ConfigGridView.Rows[e.NewEditIndex]; 
    (ConfigGridView.Rows[row.RowIndex].FindControl("lbtnActivateConfig")).Visible = true;  
} 

你並不需要強制轉換爲LinkButton因爲所有控件都具有Visible財產。當你將FindControl設置爲一個變量時,該變量是由值而不是由引用設置的,這意味着你並不是指實際的控制。

+0

這是正確的,我不需要LinkBut​​ton,但這不能解決我的問題。代碼更緊湊,但可見性保持不變。 –

+0

請記住,根據您在網格視圖上如何實現編輯,您需要將按鈕放在''中(我認爲這就是所謂的),或者當一行正在被訪問時它將不可訪問編輯。 –

+0

我找到了解決該問題的方法,但未修復該問題。無論如何,感謝您的幫助! –

相關問題