2012-02-17 91 views
0

我被分配將舊版本的一些.Net項目轉換爲.net 4.0版本。我使用ODAC驅動程序替換ODBC驅動程序。一切都很順利,直到我發現GridView的問題,當我嘗試刪除一行時,我得到了非法字符Oracle異常。 gridview在更新面板內。我收到的異常是Microsoft Jscript運行時錯誤:Sys.WebForms.PageRequestManagerServerErrorException:ORA-00911:無效字符。以下是網格視圖和sqldatasource的代碼。 linkbutton使用sqldatasource的deleteparameters觸發刪除。刪除gridview行時出現無效字符錯誤

    <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 

       <Columns> 



       <asp:TemplateField HeaderText="View"> 

        <ItemTemplate> 

         <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("CODE_OWNER_ID", "default.aspx?id={0}") %>'>View</asp:HyperLink> 



        </ItemTemplate> 

       </asp:TemplateField> 

       <asp:BoundField DataField="CODE_OWNER_ID" Visible ="False" HeaderText="CODE OWNER ID" /> 

       <asp:BoundField DataField="CODE_TYPE" ReadOnly ="True" HeaderText="CODE TYPE" /> 

       <asp:BoundField DataField="CODE" ReadOnly="True" HeaderText="CODE" /> 

       <asp:BoundField DataField="UNIT_CODE" ReadOnly ="True" HeaderText="UNIT CODE" /> 

       <asp:BoundField DataField="UNIT_NAME" ReadOnly="True" HeaderText="UNIT NAME" /> 

       <asp:BoundField DataField="UNIT_DO" ReadOnly="True" HeaderText="UNIT DO" /> 

       <asp:BoundField DataField="OWNER" ReadOnly="True" HeaderText="OWNER" /> 

       <asp:BoundField DataField="OWNER_EMAIL" ReadOnly="True" HeaderText="OWNER EMAIL" /> 

       <asp:BoundField DataField="OWNER_PHONE" ReadOnly="True" HeaderText="OWNER PHONE" /> 

       <asp:BoundField DataField="OWNER_MAILPOINT" ReadOnly="True" HeaderText="OWNER MAILPOINT" /> 





       <asp:BoundField DataField="CODE_ESTABLISHED_DATE" ReadOnly="True" DataFormatString="{0:MM/dd/yyyy}" HeaderText="CODE ESTABLISHED DATE" /> 

       <asp:BoundField DataField="LAST_REVIEW_DATE" ReadOnly="True" DataFormatString="{0:MM/dd/yyyy}" HeaderText="LAST REVIEW DATE" /> 

       <asp:BoundField DataField="REVIEW_USERNAME" ReadOnly="True" HeaderText="REVIEW USERNAME" /> 

       <asp:BoundField DataField="CODE_DELETED_DATE" ReadOnly="True" DataFormatString="{0:MM/dd/yyyy}" HeaderText="CODE DELETED DATE" /> 

       <asp:BoundField DataField="DELETE_REASON" ReadOnly="True" HeaderText="DELETE REASON" /> 

       <asp:BoundField DataField="UPDATE_USERNAME" ReadOnly="True" HeaderText="UPDATE USERNAME" />  







        <asp:TemplateField ShowHeader="False"> 

         <ItemTemplate> 

          <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete" 

          Text='Delete' 



           OnClientClick="return confirm('Are you sure you want to delete this record?');" 

           CommandArgument='<%# bind("CODE_OWNER_ID") %>'></asp:LinkButton> 



         </ItemTemplate> 

         <ItemStyle Wrap="False" /> 

       </asp:TemplateField> 



       </Columns> 

       <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 

       <SelectedRowStyle BackColor="#FFCC66" ForeColor="Navy" Font-Bold="True" /> 

       <HeaderStyle BackColor="#990000" Font-Bold="True" HorizontalAlign="Center" ForeColor="White" /> 

       <AlternatingRowStyle BackColor="White" /> 

       <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 

       </asp:GridView> 

      &nbsp;&nbsp;&nbsp;&nbsp; 

</ContentTemplate> 

     <Triggers> 

      <asp:PostBackTrigger ControlID="btnAdd" /> 

     </Triggers> 

    </asp:UpdatePanel> 

    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 



      <asp:SqlDataSource ID="Sqldatasource1" runat="server" ConnectionString="<%$ ConnectionStrings:Conn_Code_Owner %>" 

       ProviderName="<%$ ConnectionStrings:Conn_Code_Owner.ProviderName %>" 



       OldValuesParameterFormatString="original_{0}" 

        SelectCommand="SELECT * FROM CODE_OWNER" 

        DeleteCommand="DELETE FROM CODE_OWNER WHERE CODE_OWNER_ID = ?" 




        OnSelecting="_data_Selecting" 

       ConflictDetection="CompareAllValues" > 



        <DeleteParameters> 

         <asp:Parameter Name="Original_CODE_OWNER_ID" Type="Decimal"/> 

        </DeleteParameters> 






      </asp:SqlDataSource> 
+0

看不到該錯誤的原因。你能發佈完整的異常細節嗎? – 2012-02-17 04:52:15

+0

嘿克里斯托弗。該錯誤沒有堆棧跟蹤。 Visual Studio指向一個名爲ScriptResource.axd的運行時內部文件。它包含許多js函數。該錯誤顯示在名爲Sys $ Webforms $ PageRequestmanager $ _endPostback(error,executor,data)的函數中。 delete參數是一個主鍵。在gridview使用刪除鏈接按鈕的大部分地方,我遇到了同樣的錯誤。它在ODBC中正常工作。 – justcoding124 2012-02-17 05:01:22

+0

你可以嘗試在更新面板上禁用Ajax,並且你應該得到一個更好的錯誤信息。 – 2012-02-17 05:09:05

回答

0

我發現使用網格視圖的行刪除事件容易替代。我只是刪除了ASP頁面的sqldatasource中的刪除參數,然後將衝突檢測設置爲覆蓋更改。

Sqldatasource1.DeleteCommand = "DELETE FROM code_owner WHERE code_owner_ID = :original_code_owner_ID" 
    Sqldatasource1.DeleteParameters.Add("original_code_owner_ID", GridView1.DataKeys(e.RowIndex).Values("code_owner_ID").ToString) 
    Sqldatasource1.Delete() 
    GridView1.DataBind() 
0
+0

嘿,這聽起來像一個解決方案。但是,當我嘗試開始從CODE_OWNER DELETE CODE_OWNER_ID =?END我得到以下錯誤ORA-06550:行1,列51: PL/SQL:ORA-00911:無效字符 ORA-06550:第1行,第7列: PL/SQL:SQL語句被忽略 ORA-06550 :第1行第55列: PLS-00103:在期待以下某項時遇到符號「文件結束」: ; – justcoding124 2012-02-17 12:54:48

+0

當我嘗試開始從CODE_OWNER DELETE CODE_OWNER_ID =?結束;我得到了Oracle.DataAccess.Client.OracleException:ORA-06550:第1行第51列: PL/SQL:ORA-00911:無效字符 ORA-06550:第1行第7列: PL/SQL:SQL語句被忽略 ORA-06550:行1,列56: PLS-00103:出現符號在需要下列之一「結束文件」時: 開始的情況下聲明端退出異常用於轉到如果循環模 空編譯加註返回選擇更新,同時使用 <標識符><雙引號d – justcoding124 2012-02-17 12:56:35

+0

開始從CODE_OWNER刪除CODE_OWNER_ID =? ;結束;我得到無效的字符錯誤 – justcoding124 2012-02-17 12:59:33