【发布时间】:2009-02-10 21:14:58
【问题描述】:
我已经搜索过,现在不知道我的问题的原因。
这是我的问题的简短版本。
我有一个 gridview、一个用于打开/关闭 gridview 分页的复选框以及一个带有选择和删除查询的 sql 数据源。如果分页打开,我可以单击删除网格视图中的一行,它运行并且页面刷新没有问题。如果我为 gridview 关闭分页,当我对 sql server 中的表执行直接查询但页面无法重新加载时,删除查询似乎会运行。我收到以下错误:
指定的参数不在 有效值的范围。参数名称: 值描述:一个未处理的 期间发生异常 执行当前的 Web 请求。 请查看堆栈跟踪以获取更多信息 有关错误和位置的信息 它起源于代码。
异常详情: System.ArgumentOutOfRangeException: 指定的参数超出了 有效值的范围。参数名称: 价值
来源错误:
产生了一个未处理的异常 在当前执行期间 网络请求。有关的信息 异常的起源和位置 可以使用异常识别 下面的堆栈跟踪。
堆栈跟踪:
[ArgumentOutOfRangeException: 指定的参数超出了 有效值的范围。参数名称: 价值]
System.Web.UI.WebControls.GridView.set_SelectedIndex(Int32 价值)+280
System.Web.UI.WebControls.GridView.HandleDeleteCallback(Int32 受影响的行,例外 ex) +352
System.Web.UI.DataSourceView.Delete(IDictionary 键,IDictionary oldValues, 数据源视图操作回调 回调)+119
System.Web.UI.WebControls.GridView.HandleDelete(GridViewRow 行,Int32 行索引)+938
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean CausesValidation, String 验证组)+1152
System.Web.UI.WebControls.GridView.RaisePostBackEvent(字符串 事件参数)+190
System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler 源控件,字符串事件参数) +11 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +172
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔值 includeStagesAfterAsyncPoint) +4920
这是页面代码:
<asp:SqlDataSource ID="dsSQL_ClaimsDetail" runat="server" ConnectionString="<%$ ConnectionStrings:activeDB_Connection %>"
DeleteCommand="DELETE FROM [tblReturnClaimDetail] WHERE [ID] = @ID" ProviderName="<%$ ConnectionStrings:activeDB_Connection.ProviderName %>"
SelectCommand="SELECT ID, HeaderID, CustomerSKUData, NikeInvoiceOrSalesOrderNumber, StyleandColorCode, StyleCode, ColorCode, StyleName, WholesaleDolrs, OriginalWholesaleDolrsPerUnit, Units, AccountDiscDolrsPerUnit, TotalNetPriceDolrs, HandlingandProcessing, Negotiated, NegotiatedReason, NegotiatedOptionType, NegotiatedOptionValue, FinalUnitPrice, FinalDolrs, FinalStandardDolrs, UpdateTime, UpdateUser, BatchUser, Approved, Denied, Pending, ClaimDisposition, FinalDecisionDate, ClaimRecordNumber, ASMName, Category, Gender, Other1, Other2, Other3, GBURegion, Division, BudgetManagerName, ClaimsBudgetYear, ClaimsBudgetQuarter, ApprovedDate, ReconciledBy, ReconciledDate, ReconcileOrigionalLineID FROM tblReturnClaimDetail WHERE (HeaderID = @claimID)">
<DeleteParameters>
<asp:Parameter Name="ID" />
</DeleteParameters>
<SelectParameters>
<asp:ControlParameter ControlID="lbl_ClaimNumber" Name="claimID" PropertyName="Text" />
</SelectParameters>
</asp:SqlDataSource>
<asp:CheckBox ID="chkbox_detailPagerToggle" runat="server" Text="View all styles at once" Visible="True" AutoPostBack="True" Checked="True" /> </div>
<asp:GridView ID="grid_Details" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" DataSourceID="dsSQL_ClaimsDetail">
<Columns>
<asp:CommandField SelectText="Edit" ShowSelectButton="True">
<HeaderStyle BackColor="Transparent" />
</asp:CommandField>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
SortExpression="ID" />
<asp:BoundField DataField="NikeInvoiceOrSalesOrderNumber" HeaderText="Nike Invoice /<br />Sales Order #"
HtmlEncode="False" SortExpression="NikeInvoiceOrSalesOrderNumber" />
<asp:BoundField DataField="StyleCode" HeaderText="Style Code" SortExpression="StyleCode" />
<asp:BoundField DataField="ColorCode" HeaderText="Color Code" SortExpression="ColorCode" />
<asp:BoundField DataField="StyleName" HeaderText="Style Name" SortExpression="StyleName" />
<asp:BoundField DataField="GBURegion" HeaderText="Channel" SortExpression="GBURegion" />
<asp:BoundField DataField="Category" HeaderText="Category" SortExpression="Category" />
<asp:BoundField DataField="Gender" HeaderText="Gender" SortExpression="Gender" />
<asp:BoundField DataField="OriginalWholesaleDolrsPerUnit" DataFormatString="{0:c2}"
HeaderText="WholeSale<br />$/Unit" HtmlEncode="False" SortExpression="OriginalWholesaleDolrsPerUnit" />
<asp:BoundField DataField="Units" HeaderText="Units" SortExpression="Units" />
<asp:BoundField DataField="AccountDiscDolrsPerUnit" DataFormatString="{0:c2}" HeaderText="Discount<br />$/Unit"
HtmlEncode="False" SortExpression="AccountDiscDolrsPerUnit" />
<asp:BoundField DataField="HandlingandProcessing" DataFormatString="{0:c2}" HeaderText="Handling &<br />Processing"
HtmlEncode="False" SortExpression="HandlingandProcessing" />
<asp:CheckBoxField DataField="Negotiated" HeaderText="Negotiated" SortExpression="Negotiated" />
<asp:BoundField DataField="NegotiatedReason" HeaderText="Negotiated Reason" SortExpression="NegotiatedReason" />
<asp:BoundField DataField="NegotiatedOptionType" HeaderText="Negotiated Type" SortExpression="NegotiatedOptionType" />
<asp:BoundField DataField="NegotiatedOptionValue" HeaderText="Negotiated Value" SortExpression="NegotiatedOptionValue" />
<asp:BoundField DataField="FinalDolrs" DataFormatString="{0:c2}" HeaderText="Final $ for Product"
HtmlEncode="False" SortExpression="FinalDolrs">
<ItemStyle Font-Bold="True" />
</asp:BoundField>
<asp:CommandField ShowDeleteButton="True">
<HeaderStyle BackColor="Transparent" />
</asp:CommandField>
</Columns>
</asp:GridView>
这 3 个对象的唯一代码位于复选框上:
Protected Sub chkbox_detailPagerToggle_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles chkbox_detailPagerToggle.CheckedChanged
If Me.chkbox_detailPagerToggle.Checked = True Then
Me.grid_Details.AllowPaging = False
Else
Me.grid_Details.AllowPaging = True
End If
End Sub
任何能让我找到正确方向的想法都会很棒,因为我不知道下一步该去哪里解决这个问题。
【问题讨论】: