在DataGrid里的ItemCreated事件时,重定向Render流
1private void grdSearchResults_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 2 { 3 try 4 { 5 ListItemType itemtype = e.Item.ItemType; 6 if(itemtype == ListItemType.Item || itemtype == ListItemType.AlternatingItem) 7 { 8 BindSerialNum(e); 9 //把主健值保存下来,为绑投标值用。10 ViewState["PK_Cert_Info_ID"] = grdSearchResults.DataKeys[e.Item.ItemIndex].ToString();11 //投标值和分值特殊处理12 e.Item.SetRenderMethodDelegate(new RenderMethod(NewRenderMethod));13 }14 }15 catch(Exception ex)16 {17 Response.Write("<script>alert('"+ex.ToString()+"')</script>");18 }19 }
在自定义Render方法里实现效果
1 private void NewRenderMethod(HtmlTextWriter writer, Control ctl) 2 { 3 //把前面的控件输出 4 for(int i = 0 ;i <= 5; i ++) 5 { 6 TableCell cell = (TableCell)ctl.Controls[i]; 7 cell.RowSpan = 2; 8 cell.RenderControl(writer); 9 }10 //得到特定资质下的所有投标值11 string PK_Cert_Info_ID = ViewState["PK_Cert_Info_ID"].ToString();12 DataTable dt = ProjectCert_BLL.SelectBidValuesByCertID(PK_Cert_Info_ID);13 14 //特别的输出投标值15 TableCell tablecell = (TableCell)ctl.Controls[6];16 if(tablecell != null)17 {18 //遍历投标值19 foreach(DataRow row in dt.Rows)20 {21 //给DataGrid的投标值列手工绑定数据22 Label lb = new Label();23 lb.Text = row["BidValue_Name"].ToString();24 tablecell.Controls.Add(lb);25 //换行26 LiteralControl lctr = new LiteralControl("<BR>");27 tablecell.Controls.Add(lctr);28 }29 //输出到HtmlTextWriter流中30 tablecell.RenderControl(writer);31 }32 //特别的输出投标值的分值33 TableCell tablecell2 = (TableCell)ctl.Controls[7];34 if(tablecell2 != null)35 {3637 for(int i=0;i<dt.Rows.Count;i++)38 {39 TextBox txtBidValue = new TextBox();40 txtBidValue.CssClass = "TextBox";41 txtBidValue.ID = txtBidValue+i.ToString();42 tablecell2.Controls.Add(txtBidValue);43 //换行44 LiteralControl lctr = new LiteralControl("<BR>");45 tablecell2.Controls.Add(lctr);46 }47 //输出到HtmlTextWriter流中48 tablecell2.RenderControl(writer);49 }50 }
转载于:https://www.cnblogs.com/nanshouyong326/archive/2006/12/05/583117.html
转载请注明原文地址: https://win8.8miu.com/read-1482132.html