2013-03-27 60 views
0

我有以下的SqlDataSource:的DeleteCommand不會在asp.net 2.0工作

<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> 

這是在DetailsView我:

<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> 

當我在DetailsView點擊刪除按鈕,其鏈接對此,頁面刷新但該項目不會被刪除。我認爲DeleteCommand返回0行或錯誤,我不能捕捉到錯誤。我試着看看它的DeleteCommand案例甚至通過將SQL切換到這種情況發射:

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

它仍然沒有做任何事情。有任何想法嗎?

回答

0

嘗試使用SQL Server Profiler來查看數據庫上運行的內容以及它給出的錯誤。

0

我敢打賭,你的連接字符串包括諸如User Instance=trueAttachDbFileName=...之類的東西,並且在你運行刪除命令後,你通過SSMS或Visual Studio(不是你的應用)連接並檢查表格。

如果是這樣的話,那麼你需要停止使用這個User Instance功能(已被棄用)。它所做的是爲任何連接的應用程序的每個實例創建數據庫的副本。

您需要做的是正確地將您的數據庫附加到SQL Server的實例,並從所有應用程序連接到該數據庫的副本。

+0

這是我的連接字符串(帶*切換服務器名稱): 它沒有您提到的用戶實例:s – chris31389 2013-03-28 09:11:12