0

次の SqlDataSource があります。

<asp:SqlDataSource ID="LDetails" runat="server" ConnectionString="<%$ ConnectionStrings:NormCon %>"
    SelectCommand ="SELECT l.Link_ID,l.Link_Name,l.Link_Path,l.Link_Desc
                    FROM HyperLinks l
                    WHERE l.link_id = @Link_ID;"
    UpdateCommand ="UPDATE Hyperlinks SET Link_Name = @Link_Name, Link_Path = @Link_Path, Link_Desc = @Link_Desc WHERE Link_ID = @Link_ID;"
    DeleteCommand ="DELETE FROM Hyperlinks_Groups WHERE Join_Link = @Link_ID; DELETE FROM Hyperlinks WHERE Link_ID = @Link_ID;"
    <SelectParameters>
        <asp:ControlParameter Name="Link_ID" ControlID="linkList" PropertyName="SelectedDataKey.Value" />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="Link_Name" />
        <asp:Parameter Name="Link_Path" />
        <asp:Parameter Name="Link_Desc" />
        <asp:ControlParameter Name="Link_ID" ControlID="linkList" PropertyName="SelectedDataKey.Value" />
    </UpdateParameters>
    <DeleteParameters>
        <asp:ControlParameter Name="Link_ID" ControlID="linkList" PropertyName="SelectedDataKey.Value" />
    </DeleteParameters>
</asp:SqlDataSource>

これは私が持っている詳細ビューです:

<asp:DetailsView ID="LinkDetails" runat="server" DataSourceID="LDetails" 
    DataKeyNames="Link_ID" AutoGenerateRows="False" OnItemDeleted="deleteLinkReload" >
    <Fields>
    <asp:BoundField DataField="Link_ID" />
        <asp:TemplateField HeaderText="Link Name">
            <ItemTemplate>
                <asp:Label ID="lblLinkName" runat="server" Text='<%# Bind("Link_Name") %>' />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtLinkName" runat="server" Text='<%# Bind("Link_Name") %>' MaxLength="50" /> 
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Link">
            <ItemTemplate>
                <asp:HyperLink ID="lnkLinkPath" runat="server" Text='<%# Bind("Link_Path") %>' NavigateUrl='<%# Bind("Link_Path") %>' />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtLinkActual" runat="server" Text='<%# Bind("Link_Path") %>' MaxLength="250" /> 
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Comment">
            <ItemTemplate>
                <asp:Label ID="lblLinkComment" runat="server" Text='<%# Bind("Link_Desc") %>' />
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtLinkComment" runat="server" Text='<%# Bind("Link_Desc") %>' MaxLength="250" />
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="linkDetailsEdit" runat="server" CommandName="edit" Text="Edit" />
                <asp:LinkButton ID="linkDetailsDelete" runat="server" OnClientClick="return confirm('OK to delete link?');" CommandName="Delete" Text="Delete Link" /> <%--OnClick="DeleteLink" --%>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:LinkButton ID="linkDetailsAccept" runat="server" CommandName="update" Text="Accept" />
                <asp:LinkButton ID="linkDetailsCancel" runat="server" CommandName="Cancel" CausesValidation="false" Text="Cancel" />
            </EditItemTemplate>
        </asp:TemplateField>
    </Fields>
</asp:DetailsView>

これにリンクされている詳細ビューの削除ボタンをクリックすると、ページが更新されますが、アイテムは削除されません。エラーをキャッチできずに、DeleteCommand が 0 行またはエラーを返していると思います。SQL を次のように切り替えて、DeleteCommand が発火した場合であるかどうかを確認してみました。

 DeleteCommand ="INSERT INTO mis_test (string) VALUES ('Hi');"

それでも何もしませんでした。何か案は?

4

2 に答える 2

0

SQL Server プロファイラーを使用して、データベースで何が実行され、どのようなエラーが発生するかを確認してください。

于 2013-03-27T18:06:36.843 に答える
0

接続文字列には や などのものが含まれてUser Instance=trueおりAttachDbFileName=...、delete コマンドを実行した後、(アプリではなく) SSMS または Visual Studio を介して接続し、テーブルをチェックしていると思います。

このような場合は、この機能の使用を停止User Instanceする必要があります (廃止されました)。これにより、接続するアプリケーションのインスタンスごとにデータベースのコピーが作成されます。

必要なことは、データベースを SQL Server の実際のインスタンスに適切に接続し、すべてのアプリケーションからそのデータベースのコピーに接続することです。

于 2013-03-27T18:12:29.887 に答える