2013-04-04 39 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(); 
     } 
    } 
相关问题