一、override Render(页面刷新后attribute的属性会消失) protected override void Render(HtmlTextWriter writer) { StringBuilder sb = new StringBuilder(); System.IO.TextWriter tw = new System.IO.StringWriter(sb); HtmlTextWriter OriginalStream = new HtmlTextWriter(tw); base.Render(OriginalStream); string s = sb.ToString(); int start = 0; for (int i = 0; i < this.Items.Count; i++) { start = s.IndexOf("<input", start, s.Length - start); StringBuilder sbItemAttribute = new StringBuilder(); this.Items[i].Attributes.Render(new HtmlTextWriter(new System.IO.StringWriter(sbItemAttribute))); s = s.Insert(start + 7, sbItemAttribute.ToString() + " "); if (start > 0) { start = s.IndexOf("/>", start, s.Length - start); } } writer.Write(s); } ListItem lt = new ListItem(tab.Rows[i][""].ToString(), tab.Rows[i]["value"].ToString()); lt.Attributes.Add("value1", tab.Rows[i]["value"].ToString()); this.checkboxlist.Items.Add(lt); 二、 void IRepeatInfoUser.RenderItem(ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer) { writer.WriteBeginTag("input"); writer.WriteAttribute("type", "checkbox"); writer.WriteAttribute("name", UniqueID + this.IdSeparator + repeatIndex.ToString(NumberFormatInfo.InvariantInfo)); writer.WriteAttribute("id", ClientID + this.ClientIDSeparator + repeatIndex.ToString(NumberFormatInfo.InvariantInfo)); writer.WriteAttribute("value", Items[repeatIndex].Value); if (Items[repeatIndex].Selected) writer.WriteAttribute("checked", "checked"); System.Web.UI.AttributeCollection attrs = Items[repeatIndex].Attributes; foreach (string key in attrs.Keys) { writer.WriteAttribute(key, attrs[key]); } writer.Write(">"); writer.Write(Items[repeatIndex].Text); }