0

我得到这个错误页面:

Server Error in '/EMS/customerreportingnet' Application.

Operation is not valid due to the current state of the object. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Operation is not valid due to the current state of the object.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 

[InvalidOperationException: Operation is not valid due to the current state of the object.]
   System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +4198079
   System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +60
   System.Web.HttpRequest.FillInFormCollection() +189
[HttpException (0x80004005): The URL-encoded form data is not valid.]
   System.Web.HttpRequest.FillInFormCollection() +11196408
   System.Web.HttpRequest.get_Form() +119
   System.Web.TraceContext.InitRequest() +1188
   System.Web.TraceContext.VerifyStart() +133   System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +11307449
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +452

--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.5485; ASP.NET Version:2.0.50727.5491

...当我单击触发此代码的按钮时:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim upd8DML As String = "UPDATE CustomerCategoryLog SET Category = 'Exploding' WHERE Unit = @Unit And MemberNo = @MemberNo AND Custno = @CustNo"

    Dim coName As String
    Dim argVals(2) As String
    Dim _Unit As String
    Dim _MemberNo As String
    Dim _CustNo As String
    Dim curIndexVal As String

    For Each cntrl As Control In Me.Controls
        If TypeOf cntrl Is CheckBox Then
            If DirectCast(cntrl, CheckBox).Checked = True Then
                curIndexVal = DirectCast(cntrl, CheckBox).ID
                coName = GetLabelTextForID(curIndexVal)
                argVals = GetArgValsForCompanyName(coName)
                _Unit = argVals(0)
                _MemberNo = argVals(1)
                _CustNo = argVals(2)
                Using conn As New SqlConnection(ConfigurationSettings.AppSettings("ConnectionString")), _
                    cmd As New SqlCommand(upd8DML, conn)
                    cmd.Parameters.Add("@Unit", SqlDbType.VarChar, 50).Value = _Unit
                    cmd.Parameters.Add("@MemberNo", SqlDbType.VarChar, 50).Value = _MemberNo
                    cmd.Parameters.Add("@CustNo", SqlDbType.VarChar, 50).Value = _CustNo
                    conn.Open
                    cmd.ExecuteScalar()
                End Using
            End If
        End If
    Next

End Sub

我的猜测是,这是因为表单上数以千计的标签/复选框对控件实在是太多了,无法处理(没有双关语的意思)。如果这种推算是正确的,那么页面将承载的控件的限制是多少?

有没有一种解决方法可以让我处理数千个标签/复选框对?

或者是导致问题的更新语句的数量?

错误消息似乎表明要处理的控件太多...

4

0 回答 0