私はチェックボックスコントロールの各チェックボックスの後にdivを追加するカスタムチェックボックスコントロールを作成しています。 クラスは以下の通りです。カスタムチェックボックスリストコントロールasp.netのエラー。 "startIndexは文字列の長さを超えることはできません"
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.Globalization
Public Class MyCheckboxListCheckBox
Inherits CheckBoxList
Implements IRepeatInfoUser
Protected Overrides Sub RenderItem(ByVal itemType As ListItemType, ByVal repeatIndex As Integer, ByVal repeatInfo As RepeatInfo, ByVal writer As HtmlTextWriter)
writer.WriteBeginTag("input")
writer.WriteAttribute("type", "checkbox")
writer.WriteAttribute("name", UniqueID)
writer.WriteAttribute("id", (ClientID & "_") + repeatIndex.ToString(NumberFormatInfo.InvariantInfo))
writer.WriteAttribute("value", Items(repeatIndex).Value)
Dim attrs As System.Web.UI.AttributeCollection = Items(repeatIndex).Attributes
For Each key As String In attrs.Keys
writer.WriteAttribute(key, attrs(key))
Next
writer.Write(">")
writer.Write(Items(repeatIndex).Text)
' writer.Write("<div id=" & "mynewDiv" & Items(repeatIndex).Value & "></div>")
End Sub
End Class
ただし、ページで使用して保存するとエラーが発生します。エラーは次のとおりです。
startIndex cannot be larger than length of string. Parameter name: startIndex 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.ArgumentOutOfRangeException: startIndex cannot be larger than length of string. Parameter name: startIndex
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:
[ArgumentOutOfRangeException: startIndex cannot be larger than length of string. Parameter name: startIndex]
System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) +7492915
System.Web.UI.WebControls.CheckBoxList.LoadPostData(String postDataKey, NameValueCollection postCollection) +60
System.Web.UI.WebControls.CheckBoxList.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +13
System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +346
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1743
で配列や、そのようなスタートを覚えておいてください.jasonlinham.co.uk/2009/04/checkboxlist-startindex-can not-be.html Jason Linhamのブログに感謝します。 – Greens