【问题标题】:Close Telerik Radgrid Editform If Already Opened如果已经打开,请关闭 Telerik Radgrid Editform
【发布时间】:2013-03-27 01:28:03
【问题描述】:

过去一两个小时我一直在试图找到一个解决方案来解决我认为应该容易做的事情以及我认为以前有人问过的事情,但也许我没有使用正确的术语。

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

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

再一次,没什么特别的。当网格加载时,每行都有一个“+”字符,允许它展开。如果我单击它,它会正确打开。如果我单击另一行,它会关闭我打开的行并打开我单击的行。很好,一切都很好。

现在我一直试图搜索的是,如果我已经打开了一行并且我再次单击“+”链接,如果它已经打开,我希望关闭该行。现在,它仍然处于打开状态。

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

【问题讨论】:

    标签: c# asp.net telerik radgrid


    【解决方案1】:

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

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

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

    【讨论】:

    • 我喜欢你的推荐!它导致了我在下面发布的解决方案。谢谢大佬!
    【解决方案2】:

    根据 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();
            }
        }
    

    【讨论】:

      【解决方案3】:

      请尝试以下代码 sn-p。

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

      【讨论】:

      • 我尝试过类似的方法,但无济于事。它确实进入了那个 if 块,但是在这里之后的某个地方必须重新添加它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多