0

Я создаю пользовательский CheckBox WebControl, который наследует от System.Web.UI.WebControls.CheckBox в ASP.NET. Но получение этой ошибки при обратной передаче:Пользовательский CheckBoxList Ошибка WebControl

Строка ввода не была в правильном формате.

[FormatException: Input string was not in a correct format.] 
System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +10896279 
System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +145 
System.Web.UI.WebControls.CheckBoxList.LoadPostData(String postDataKey, NameValueCollection postCollection) +140 
System.Web.UI.WebControls.CheckBoxList.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +16 
System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +734 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1960 

У меня есть список CheckBox, который называется ITEMLIST и OnInit я выполнить эту функцию:

internal void InitItems() 
    { 
     for (int i = 0; i < this.Items.Count; i++) 
     { 
      CheckBox cb = new CheckBox() 
      { 
       LabelPosition = CheckBox.LabelPositions.None 
      }; 

      ItemList.Add(cb); 
      Controls.Add(cb); 
     } 
    } 

И я называю этот метод OnRender:

public string RenderItems() { 

     StringBuilder sb = new StringBuilder(); 

     for (int i = 0; i < this.Items.Count; i++) 
     { 
      ListItem item = this.Items[i]; 
      CheckBox cb = ItemList[i]; 
      cb.Text = item.Text; 
      cb.Enabled = Enabled ? item.Enabled : Enabled; 
      cb.Checked = item.Selected; 
      cb.ID = i.ToString(); 
      cb.ViewType = (CheckBox.ViewTypes) Enum.Parse(typeof(CheckBox.ViewTypes),this.ViewType.ToString()); 
      cb.DisplayType = (CheckBox.DisplayTypes)Enum.Parse(typeof(CheckBox.DisplayTypes), this.DisplayType.ToString()); 
      if (this.AutoPostBack) 
       cb.Attributes.Add("onclick", "javascript:setTimeout('__doPostBack(\\'" + cb.ClientName + "\\',\\'\\')', 0)"); 

      sb.Append(cb.GetHtml()); 
     } 

     return sb.ToString(); 
    } 

Я предполагаю, что получаю эту ошибку, потому что сгенерированные флажки hava a неверный идентификатор или имя. Есть ли предложения?

ответ

0

только возможно, причина того, что приходит мне в голову эта линия:

cb.Attributes.Add("onclick", "javascript:setTimeout('__doPostBack(\\'" + cb.ClientName + "\\',\\'\\')', 0)"); 

вы не нужны эти \\

cb.Attributes.Add("onclick", "javascript:setTimeout('__doPostBack('" + cb.ClientName + "','')', 0)");