2013-04-04 48 views
4

我花了一兩個小時試圖找到一個解決方案,我認爲應該很容易做和我認爲之前已經問過的東西,但也許我不是使用正確的術語。關閉Telerik Radgrid Editform如果已經打開

我有一個非常基本的RadGrid,允許行進行編輯或顯示更多的東西。這裏是我在裏面的GridEditCommandColumn

<rad:GridEditCommandColumn EditText="+" UniqueName="EditCommandColumn" ItemStyle-Width="30" HeaderStyle-Width="30" /> 

再次,沒什麼特別的。網格加載時,每行都有一個「+」字符,可以擴展。如果我點擊它,它應該正確打開。如果我點擊另一行,它會關閉我打開的那一行,並打開我點擊的那一行。太棒了,一切都很好。

現在我一直在努力尋找的是,如果我有一行已經打開,我再次點擊「+」鏈接,如果它已經打開,我想這行關閉。現在,它仍然開放。

我是唯一一個想讓它關閉的人,如果你再次點擊它,如果它已經打開?

回答

1

在我們的應用程序中,我們做了類似的事情,但不是再次點擊加號按鈕,我們點擊取消按鈕。對於這個取消按鈕,我們實際上沒有任何特定的代碼,但我們設置了CommandName="Cancel"。這重新綁定網格並關閉編輯表單。對不起,它不能回答你的根本問題,但希望有一些啓動你的東西。

+1

我喜歡你的建議!這導致了我在下面發佈的解決方案。謝啦! – 2013-04-05 13:19:29

+0

很高興能幫到你! – dstepan 2013-04-05 17:06:46

2

請試試以下代碼片段。

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) 
{ 
    if (e.CommandName == RadGrid.EditCommandName) 
    { 
     RadGrid1.MasterTableView.ClearEditItems(); 
    } 
} 
+0

我試過這樣的事情,但無濟於事。它確實進入了if-block,但在此之後的某個地方它必須重新加入。 – 2013-04-05 12:26:01

+0

如果可能,那麼請你提供與Grid相關的代碼嗎? – 2013-04-05 13:00:13

3

根據dstepan的建議,我能夠解決它。我擺脫了通用的GridEditCommandColumn行,並用此代替它。

<rad:GridTemplateColumn UniqueName="ExpandRow"> 
    <ItemTemplate> 
     <asp:Button ID="btnExpand" CommandName="ExpandRow" CommandArgument="<%# Container.ItemIndex %>" Text="+" runat="server" /> 
    </ItemTemplate> 
</rad:GridTemplateColumn> 

然後事件處理程序

protected void rg_ItemCommand(object sender, GridCommandEventArgs e) 
    {    
     if (e.CommandName == "ExpandRow") 
     { 
      GridDataItem item = rg.Items[int.Parse(e.CommandArgument.ToString())]; 

      item.Edit = item.Edit ? false : true; // If it's already in edit mode, change it to false. If not, set it to true 

      rg.Rebind(); 
     } 
    } 
相關問題