CRUD使用JQGrid

时间:2012-01-11 20:51:15

标签: jquery asp.net jqgrid

我正在尝试在JQGrid中实现CRUD。但我有以下问题:

- 无法单独使用添加按钮添加行[仅在内联模式下可用]

  • 删除行会导致回发,即使EditDialogSettings.ReloadAfterSubmit设置为false。
  • 仅删除内联编辑后添加的行。如何在客户端删除行?

我希望网格在页面加载时绑定。之后的所有编辑应仅在客户端进行。一旦表单最终提交,将处理网格更改。

我正在关注this link中提供的文档,但我无法实现它。

非常感谢您对此问题的任何帮助。


更新 以下是我编写的示例代码:

<%@ Register Assembly="Trirand.Web" Namespace="Trirand.Web.UI.WebControls" TagPrefix="trirand" %>
<trirand:JQGrid ID="XYZ" runat="server"  Width="700px" showToolBar="true">
<columns>
<trirand:JQGridColumn DataField="AA" HeaderText="AA" Width="20" Editable="true" DataType="local"/>
<trirand:JQGridColumn DataField="BB" HeaderText = "BB" Width ="50" Editable="true" DataType="local" />
<trirand:JQGridColumn DataField="CC" HeaderText ="CC" Width = "20" Editable="true" DataType="local"/>
</columns>
<ClientSideEvents RowDoubleClick ="editRow" />     
<ToolBarSettings ShowInlineAddButton="true" ShowInlineCancelButton="true" ShowDeleteButton="true" />
</trirand:JQGrid>
<script type="text/javascript">
  var LastSelection;
  function editRow(id) {
    if (id) {
      var grid = jQuery("#<%= XYZ.ClientID %>");
      grid.restoreRow(LastSelection);
      grid.editRow(id, true);
      LastSelection = id;
}
}
</Script> 

我可以进行内联编辑,在顶部添加一行。但是在完成数据绑定后,我无法删除在XYZ表上看到的行。我希望这段代码可以让您了解问题。 谢谢!

2 个答案:

答案 0 :(得分:0)

当开始使用jqGrid时有些困难但最终我能理解它

将属性数据类型更改为“local”

创建列,一些如何

jQuery("<GridName>" or this).jqGrid(
  { datatype: "local",
    colNames:['column_title_0','column_title_1','column_title_2'], 
    colModel:[  {name:'column0',index:'column0', editable:false,editoptions:{readonly:true,size:10}},
                {name:'column1',index:'column1', editable:false,editoptions:{readonly:true,size:10}},
                {name:'column2',index:'column2', editable:false,editoptions:{readonly:true,size:10}}],
    viewrecords: true,
    width: 400,
    mType: "POST",
    caption:'JQGrid review',
    height: '50px',
    scroll: 1
  }
);

按ID获取行

     rowData = $(<Grid name or this for current grid>).jqGrid('getRowData',rowId);
      if(rowData)
      {
        rowData.Property
      }

添加行

  $(<grid id> or this).jqGrid('addRowData', <Here.Model.Id>, <object with all properties>);

按ID删除行

  $("<grid id>" or this).jqGrid('delRowData',rowId);

选择当前行

  var selRowIndex = $("<grid id>" or this).jqGrid('getGridParam','selrow');

我建议你转向http://trirand.com/blog/jqgrid/jqgrid.html它有很好的例子

答案 1 :(得分:0)

以下是我编写的示例代码:

<%@ Register Assembly="Trirand.Web" Namespace="Trirand.Web.UI.WebControls" TagPrefix="trirand" %>
<trirand:JQGrid ID="XYZ" runat="server"  Width="700px" showToolBar="true">
<columns>
<trirand:JQGridColumn DataField="AA" HeaderText="AA" Width="20" Editable="true" DataType="local"/>
<trirand:JQGridColumn DataField="BB" HeaderText = "BB" Width ="50" Editable="true" DataType="local" />
<trirand:JQGridColumn DataField="CC" HeaderText ="CC" Width = "20" Editable="true" DataType="local"/>
</columns>
<ClientSideEvents RowDoubleClick ="editRow" />     
<ToolBarSettings ShowInlineAddButton="true" ShowInlineCancelButton="true" ShowDeleteButton="true" />
</trirand:JQGrid>
<script type="text/javascript">
  var LastSelection;
  function editRow(id) {
    if (id) {
      var grid = jQuery("#<%= XYZ.ClientID %>");
      grid.restoreRow(LastSelection);
      grid.editRow(id, true);
      LastSelection = id;
}
}
</Script> 

我可以进行内联编辑,在顶部添加一行。但是在完成数据绑定后,我无法删除在XYZ表上看到的行。我希望这段代码可以让您了解问题。 谢谢!