0

で悪い状況が発生していjqGridます。

jqGrid が .aspx ページに追加された asp.net 4.0 を使用しています。この目的で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

次に、特定の行を編集/削除しようとすると、無駄に終了しました。編集/更新および削除機能は機能しません。

コードビハインドに行削除を追加して、適切なデータを取得しているかどうかを確認しました。

のプロパティを使用して次の関数を追加しましたjQGrid

protected void jQGrid1_RowDeleting(object sender, Trirand.Web.UI.WebControls.JQGridRowDeleteEventArgs e)
        {

        }

デバッガーを{ei に配置すると、レコードが選択されているときに来るデータが表示されます。

行を追加するとjqGrid、データベースとデータベースに追加されます。これはうまくいきます!

db または jqGrid から削除しないのはなぜですか?

それは私がセットアップしたUpdateCommand/のせいですか?または、 jqGrid に代わってこれらのものを実装するために追加機能を設定する必要がありますか?DeleteCommandSqlDataSource

注: CodeBehind ファイルの RowDeleting メソッドで選択されたデータを確認できたら、ado.net コードを追加して明示的に削除できました。jqGridでそれを行うための解決策があれば投稿してください。

コメント/回答を投稿していただきありがとうございます。

編集

Sql Profiler を実行すると問題が見つかりました。

フォーム編集で列を編集すると、id が渡されません。これが私のSQLプロファイラーが得たものです

    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 値が渡されない理由を指摘してください。

4

1 に答える 1

1

key: true私自身、jqGrid/jqSuite の商用版は使用していませんが、列の定義に追加する必要があると思いCompanyIdます。カラムの定義にある値PrimaryKey=trueに対応しているようです。trirand:JQGridColumn

于 2013-04-04T15:12:53.790 に答える