删除gridview行时出现无效字符错误

时间:2012-02-17 04:42:56

标签: asp.net asp.net-ajax

我被分配将旧版本的一些.Net项目转换为.net 4.0版本。我使用ODAC驱动程序替换ODBC驱动程序。一切顺利,直到我发现gridview的问题,当我尝试删除一行时,我得到非法字符Oracle异常。 gridview位于更新面板中。我收到的异常是Microsoft Jscript运行时错误:Sys.WebForms.PageRequestManagerServerErrorException:ORA-00911:无效字符。以下是网格视图和sqldatasource的代码。 linkbutton使用sqldatasource的delete参数触发删除。

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

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分: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()