关闭Telerik Radgrid Editform如果已经打开

Luc*_*rre 5 c# asp.net telerik radgrid

我花了一两个小时试图找到一个我认为应该容易做的解决方案,以及我之前想过的问题,但也许我没有使用正确的术语.

我有一个非常基本的RadGrid,它允许扩展行以进行编辑或显示更多内容.这是我在里面的GridEditCommandColumn

<rad:GridEditCommandColumn EditText="+" UniqueName="EditCommandColumn" ItemStyle-Width="30" HeaderStyle-Width="30" />
Run Code Online (Sandbox Code Playgroud)

再一次,没什么特别的 当网格加载时,每行都有一个"+"字符,允许它展开.如果我点击它,它会正确打开它应该.如果我点击另一行,它会关闭我打开的那一行并打开我点击的那一行.太好了,一切都很好.

现在我一直想要搜索的是,如果我已经打开了一行,我再次点击"+"链接,如果它已经打开,我想要关闭这一行.现在,它仍然开放.

如果你已经打开它再次点击它,我是唯一一个想要它关闭的人吗?

Luc*_*rre 5

根据dstepan的推荐,我能够解决它.我删除了通用的GridEditCommandColumn行并将其替换为此行.

<rad:GridTemplateColumn UniqueName="ExpandRow">
   <ItemTemplate>
      <asp:Button ID="btnExpand" CommandName="ExpandRow" CommandArgument="<%# Container.ItemIndex %>" Text="+" runat="server" />
    </ItemTemplate>
 </rad:GridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

然后为事件处理程序

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();
        }
    }
Run Code Online (Sandbox Code Playgroud)


dst*_*t3p 3

在我们的应用程序中,我们做了类似的事情,但是我们没有再次单击加号按钮,而是单击取消按钮。对于这个取消按钮,我们实际上没有任何特定的代码,但我们在标记中设置,然后在项目命令事件中CommandName="Cancel"检查并在那里编写我们的代码。CommandName然后网格被绑定,编辑表单将关闭。抱歉,它没有回答您的根本问题,但希望能有所启发。

下面是示例事件结构,您可以在其中使用CommandName& 进行过滤并编写您的逻辑。

protected void rg_ItemCommand(object sender, GridCommandEventArgs e)
{            
    if (e.CommandName == "Cancel")
    {
      //custom logic here
    }
}
Run Code Online (Sandbox Code Playgroud)