关闭 Telerik Radgrid 编辑表单(如果已打开)
本文关键字:如果 Telerik Radgrid 编辑 表单 关闭 | 更新日期: 2023-09-27 18:07:22
在过去的一两个小时里,我一直在试图找到一个我认为应该很容易做到的解决方案,以及我认为以前有人问过的事情,但也许我没有使用正确的术语。
我有一个非常基本的 RadGrid,它允许扩展行以进行编辑或显示更多内容。 这是我里面的 GridEditCommandColumn
<rad:GridEditCommandColumn EditText="+" UniqueName="EditCommandColumn" ItemStyle-Width="30" HeaderStyle-Width="30" />
同样,没什么特别的。 当网格加载时,每行都有一个"+"字符,允许它展开。 如果我单击它,它会正确打开。 如果我单击另一行,它会关闭我打开的行并打开我单击的行。太好了,一切都很好。
现在我一直在尝试搜索的是,如果我已经打开了一行并且再次单击"+"链接,我希望该行在已经打开时关闭。 现在,它仍然开放。
如果它已经打开,如果您再次单击它,我是唯一一个希望它关闭的人吗?
根据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();
}
}
请尝试使用以下代码片段。
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == RadGrid.EditCommandName)
{
RadGrid1.MasterTableView.ClearEditItems();
}
}
在我们的应用程序中,我们执行类似操作,但是我们不是再次单击加号按钮,而是单击取消按钮。对于这个取消按钮,我们实际上没有任何特定的代码,但我们在标记中设置了CommandName="Cancel"
,然后在 item 命令事件中检查CommandName
并在那里编写我们的代码。然后绑定网格,编辑表单将关闭。抱歉,它没有回答您的根本问题,但希望能让您开始。
下面是示例事件结构,您可以在其中使用 CommandName
进行过滤并编写逻辑。
protected void rg_ItemCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "Cancel")
{
//custom logic here
}
}