2012-02-17 112 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