[英]update and delete in jqGrid not working
我在使用jqGrid
遇到了糟糕的情况。
我正在将asp.net 4.0与jqGrid添加到.aspx页中。 为了add/edit/delete
我为此目的使用SqlDataSource
的数据。
我已经配置了default.aspx页面,如下所示:
链接:
<link rel="stylesheet" type="text/css" media="screen" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.10.0/themes/redmond/jquery-ui.css" />
<link href="Styles/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="Scripts/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="js/trirand/jquery.jqGrid.min.js" type="text/javascript"></script>
在我的表单中,我有SqlDataSource和trirand jqGrid,如下所示:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Test_1ConnectionString %>"
SelectCommand="SELECT * FROM [Companies]"
UpdateCommand="UPDATE [Companies] SET [CompanyType] = @CompanyType,[Country] = @Country,[State] = @State,[ZipCode] = @ZipCode WHERE [CompanyId] = @CompanyId"
InsertCommand="INSERT INTO [Companies]([CompanyType],[Country],[State],[ZipCode]) VALUES (@CompanyType,@Country,@State,@ZipCode)"
DeleteCommand="DELETE FROM [Companies] WHERE [CompanyId] = @CompanyId">
<DeleteParameters>
<asp:Parameter Name="CompanyId" Type="Int32"/>
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="CompanyType" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="State" Type="String" />
<asp:Parameter Name="ZipCode" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="CompanyType" Type="String" />
<asp:Parameter Name="Country" Type="String" />
<asp:Parameter Name="State" Type="String" />
<asp:Parameter Name="ZipCode" Type="String" />
<asp:Parameter Name="CompanyId" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<trirand:JQGrid ID="jQGrid1" DataSourceID="SqlDataSource1" runat="server" AppearanceSettings-Caption="Company Details"
AppearanceSettings-ShowCaptionGridToggleButton="true"
onrowdeleting="jQGrid1_RowDeleting">
<Columns>
<trirand:JQGridColumn DataField="CompanyId" Searchable="true" />
<trirand:JQGridColumn DataField="CompanyType" Editable="true" />
<trirand:JQGridColumn DataField="Country" Editable="true" />
<trirand:JQGridColumn DataField="State" Editable="true" />
<trirand:JQGridColumn DataField="ZipCode" Editable="true" />
</Columns>
<EditDialogSettings Modal="true" CloseAfterEditing="true" SubmitText="Submit Details"
Caption="Edit Company" />
<SearchDialogSettings Modal="true" FindButtonText="Search Company" />
<ToolBarSettings ShowEditButton="true" ShowAddButton="true" ShowDeleteButton="true" ShowInlineAddButton="true"
ShowSearchButton="true" ShowRefreshButton="true" />
</trirand:JQGrid>
在我研究正在发生的功能之前,一切看起来都很好。
起初,我尝试向jqGrid
添加一行,它起作用了!
然后,当我尝试编辑/删除特定行时,它以徒然结束。 编辑/更新和删除功能不起作用。
甚至我已经在代码后面添加了rowdeleting来检查我是否正在获取适当的数据。
我使用jQGrid
的属性添加了以下函数
protected void jQGrid1_RowDeleting(object sender, Trirand.Web.UI.WebControls.JQGridRowDeleteEventArgs e)
{
}
当我在{
处放置调试器时,ei在选择记录时会看到即将到来的数据。
当我添加一行时,它将添加到jqGrid
以及数据库中。 这很棒!
为什么它不从db甚至从jqGrid中删除?
我已经设置了SqlDataSource
中的UpdateCommand
/ DeleteCommand
的错误吗? 还是我需要设置其他功能来代表jqGrid实现这些功能?
注意:当我可以看到在CodeBehind文件的RowDeleting方法中选择的数据时,可以通过添加一些ado.net代码将其显式删除。 如果有可用的jqGrid解决方案,请发表。
感谢您发表的评论/答案。
编辑
我运行Sql Profiler时发现了问题。
当我用表单编辑编辑我的专栏时,没有ID传递给它。 这是我的SQL Profiler得到的
exec sp_executesql N'UPDATE [Companies] SET [CompanyType] = @CompanyType,[Country] = @Country,
[State] = @State,[ZipCode] = @ZipCode WHERE [CompanyId] = @CompanyId',N'@CompanyType nvarchar
(7),@Country nvarchar(3),@State nvarchar(5),@ZipCode nvarchar(4000),@CompanyId nvarchar
(4000)',@CompanyType=N'pvt',@Country=N'abc',@State=N'def',@ZipCode=NULL,*@CompanyId=NULL*
但是,当我使用内联编辑选项在jqGrid中编辑列时,我可以看到我的CompanyId不为null。
exec sp_executesql N'UPDATE [Companies] SET [CompanyType] = @CompanyType,[Country] = @Country,
[State] = @State,[ZipCode] = @ZipCode WHERE [CompanyId] = @CompanyId',N'@CompanyType nvarchar
(7),@Country nvarchar(3),@State nvarchar(5),@ZipCode nvarchar(4000),@CompanyId nvarchar
(4000)',@CompanyType=N'pvt',@Country=N'abc',@State=N'def',@ZipCode=NULL,*@CompanyId=3*
请问有人可以指出为什么内联查询传递id列,为什么表单编辑不传递id值?
我自己没有使用商业版本的jqGrid / jqSuite,但我尝试猜测您应该在CompanyId
列的定义中添加key: true
。 似乎它对应于列的trirand:JQGridColumn
定义中的值PrimaryKey=true
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.