protected override void Render(HtmlTextWriter writer)
{
//tb是自定义控件中的一个TextBox
//lb是自定义控件中的一个Label
//rev是一个验证控件
Table table=new Table();
table.CellPadding = 0;
table.CellSpacing = 0;
table.BorderWidth = 0;
TableRow tableRow=new TableRow();
TableCell tableCell1=new TableCell();
tableCell1.Controls.Add(lb);
tableRow.Controls.Add(tableCell1); TableCell tableCell2 = new TableCell();
tableCell2.Controls.Add(tb);
tableRow.Controls.Add(tableCell2); TableCell tableCell3 = new TableCell();
tableCell2.Controls.Add(rev);
tableRow.Controls.Add(tableCell3); table.Rows.Add(tableRow);
table.RenderControl(writer); }我在一个自定义控件中重写了Render方法,导致出现以下错误
1.页面运行的时候会自动显示验证的errorMsg.
2.页面提交后,不会保存TextBox的值.
这是为什么呢.?
然后用RenderBeginTag去绘制表格.
你这个例子 夜战鹰的树上有说..
于一些比较有重要意义的子空间,都要调用控件自身的RenderControl方法,把控件输出到writer,确保逻辑正确
估计是你一次过write Table出来之后,导致里面的控件逻辑错误。protected override void Render(HtmlTextWriter writer)
{
//tb是自定义控件中的一个TextBox
//lb是自定义控件中的一个Label
//rev是一个验证控件
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.lb.RenderControl(writer);
writer.RenderEndTag(); writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.tb.RenderControl(writer);
writer.RenderEndTag(); if(!string.IsNullOrEmpty(this.ValidateExpression)&&!this.DesignMode)
{
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.rev.RenderControl(writer);
writer.RenderEndTag();
}
writer.RenderEndTag();
writer.RenderEndTag();
}
鹰是那本庖丁解牛的作者吗.?我刚搜了下..谢谢..结贴