2013-08-29 3 views
2

Если я использую жестко закодированные значения для DeleteCommand (где JOB_ID = 123), он работает, но когда я пытаюсь использовать параметр я получаю эту ошибку:Удалить в Gridview не работает

Oracle.DataAccess.Client .OracleException: ORA-00936: отсутствует выражение.

JOB_ID - это поле varchar2 в базе данных. Любая помощь будет большой.

<asp:GridView ID="GridView1" DataSourceID="SqlDataSource1" 
runat="server" DataKeyNames="JOB_ID" AutoGenerateColumns="false" ShowHeader="true"> 



    <columns> 
       <asp:boundfield datafield="JOB_ID" headertext="Job ID"/> 
       <asp:boundfield datafield="JOB_DATE_CLOSED" headertext="Posting Closes On"/> 
       <asp:boundfield datafield="JOB_DESC" headertext="Job Description"/> 
       <asp:TemplateField> 
       <ItemTemplate> 
       <asp:Button id="DeleteButton" runat="server" text="Delete" 
       CommandName="Delete" OnClientClick="return confirm('Delete this Record?');" > 
       </asp:Button> 
     </ItemTemplate> 
    </asp:TemplateField> 
    </columns> 
    </asp:GridView> 

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:OracleInternet %>" 
        ProviderName="<%$ ConnectionStrings:OracleInternet.ProviderName %>" 
SelectCommand="SELECT JOB_ID, JOB_DATE_CLOSED, JOB_DESC FROM OWNER.JOB_POSTING" 

    DeleteCommand="DELETE FROM OWNER.JOB_POSTING WHERE JOB_ID = @JOB_ID" > 
    <DeleteParameters> 
    <asp:Parameter Name="JOB_ID" Type="String" /> 
    </DeleteParameters> 

    </asp:SqlDataSource> 
+0

В примере здесь используется другой синтаксис запроса для параметров, он также использует 'ControlParameter' вместо просто параметра. Я никогда такого не делал лично, но, возможно, это поможет вам. https://forums.oracle.com/thread/622971?start=0&tstart=0 –

+0

возможно, есть необходимость в кастинге? – andi

ответ

0

Спасибо за помощь. Гарнизон!

Я изменил @JOB_ID на: JOB_ID в файле deleteecommand, который был синтаксисом ссылки, которую вы опубликовали, и это сработало. Не знаю, почему, поскольку почти все примеры там используют @ для параметра, но еще раз спасибо.

+0

Рад, что это сработало для вас. Большинство примеров, которые вы увидите в Интернете для .NET, будут с базами данных SQL Server, так как они оба являются продуктами MSFT, которые «просто работают» вместе. –