GridView后台自动添加行、列,行列不固定,并且再列里面添加服务器控件,然后取值
2010-09-30 11:43
393 查看
using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using Questionnaire.BLL; using Questionnaire.Models; using System.Collections.Generic; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //BindGridViewCell();//绑定列名 BingGridViewItem(); BindGridViewDate(); } /// <summary> /// 绑定模板列 /// </summary> private void BingGridViewItem() { List<RateInfo> ListRate = RateManager.GetAllRateInfo(); //获取回报率 for (int i = 0; i < ListRate.Count + 1; i++) { if (i == 0) { TemplateField tpf2 = new TemplateField(); tpf2.HeaderTemplate = new GridViewTemplate2(DataControlRowType.Header, ""); tpf2.ItemTemplate = new GridViewTemplate2(DataControlRowType.DataRow, "CS" + (i).ToString()); //加入TemplateField到GridView this.GridView1.Columns.Add(tpf2); } else { TemplateField tpf2 = new TemplateField(); tpf2.HeaderTemplate = new GridViewTemplate3(DataControlRowType.Header, ListRate[i-1].Rate); tpf2.ItemTemplate = new GridViewTemplate3(DataControlRowType.DataRow, ListRate[i-1].Id.ToString()); //加入TemplateField到GridView this.GridView1.Columns.Add(tpf2); } } } /// <summary> /// 绑定GridView数据 /// </summary> private void BindGridViewDate() { DataTable dt = new DataTable(); List<RateInfo> ListRate = RateManager.GetAllRateInfo(); //获取回报率 for (int i = 0; i < ListRate.Count + 1; i++) { if (i == 0) { dt.Columns.Add("CS" + i, Type.GetType("System.String")); } else { dt.Columns.Add(ListRate[i - 1].Id.ToString(), Type.GetType("System.String")); } } List<DateInfo> ListDate = DateManager.GetAllDateInfo(); //取到时间 for (int i = 0; i < ListDate.Count; i++) { DataRow dr = dt.NewRow(); for (int j = 0; j < ListRate.Count + 1; j++) { if (j == 0) { dr["CS" + j ] = ListDate[i].Years; } else { dr[ListRate[j - 1].Id.ToString()] = ListDate[i].Id.ToString() + ListRate[j - 1].Id.ToString(); } } dt.Rows.Add(dr); } GridView1.DataSource = dt; GridView1.DataBind(); } //增加模板列 为模板列填充CheckBox public class GridViewTemplate3 : ITemplate { private DataControlRowType templateType; private string columnName; //WebSqlDbTools conn = new WebSqlDbTools(); public GridViewTemplate3(DataControlRowType type, string colname) { templateType = type; columnName = colname; } public void InstantiateIn(System.Web.UI.Control container) { switch (templateType) { case DataControlRowType.Header: Literal lc = new Literal(); lc.Text = "<B>" + columnName + "</B>"; container.Controls.Add(lc); break; case DataControlRowType.DataRow: CheckBox btn = new CheckBox(); btn.DataBinding += new EventHandler(data_DataBinding); container.Controls.Add(btn); break; default: break; } } private void data_DataBinding(object sender, EventArgs e) { CheckBox btn = (CheckBox)sender; GridViewRow row = (GridViewRow)btn.NamingContainer; btn.ID = columnName; //btn.Text = DataBinder.Eval(row.DataItem, columnName).ToString(); btn.ToolTip = DataBinder.Eval(row.DataItem, columnName).ToString(); } } //增加模板列 为模板列填充Label public class GridViewTemplate2 : ITemplate { private DataControlRowType templateType; private string columnName; //WebSqlDbTools conn = new WebSqlDbTools(); public GridViewTemplate2(DataControlRowType type, string colname) { templateType = type; columnName = colname; } public void InstantiateIn(System.Web.UI.Control container) { switch (templateType) { case DataControlRowType.Header: Literal lc = new Literal(); lc.Text = "<B>" + columnName + "</B>"; container.Controls.Add(lc); break; case DataControlRowType.DataRow: Label tb = new Label(); tb.DataBinding += new EventHandler(data_DataBinding); container.Controls.Add(tb); break; default: break; } } private void data_DataBinding(object sender, EventArgs e) { Label tb = (Label)sender; GridViewRow row = (GridViewRow)tb.NamingContainer; tb.ID = columnName; tb.Text = DataBinder.Eval(row.DataItem, columnName).ToString(); } } /// <summary> /// 按钮事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button1_Click(object sender, EventArgs e) { int cell = GridView1.Columns.Count; int row = GridView1.Rows.Count; string aa = ""; GridViewRow rowcell; List<RateInfo> ListRate = RateManager.GetAllRateInfo(); //获取回报率 for (int i = 0; i < row; i++) { rowcell = GridView1.Rows[i]; for (int j = 1; j < cell; j++) { CheckBox ck = rowcell.FindControl(ListRate[j - 1].Id.ToString()) as CheckBox; aa += ck.ToolTip.ToString()+","; } aa += "第" + (i+1).ToString() + "<br>"; } Response.Write(aa); } /// <summary> /// 绑定GridView的列 /// </summary> private void BindGridViewCell() { List<RateInfo> ListRate = RateManager.GetAllRateInfo(); //获取回报率 for (int i = 0; i < ListRate.Count + 1; i++) { if (i == 0) { BoundField bc0 = new BoundField(); bc0.DataField = "CS" + i.ToString(); bc0.HeaderText = ""; GridView1.Columns.Add(bc0); } else { BoundField bc0 = new BoundField(); bc0.DataField = ListRate[i - 1].Id.ToString(); bc0.HeaderText = ListRate[i - 1].Rate; GridView1.Columns.Add(bc0); } } } }
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" RowStyle-HorizontalAlign="Center" BorderColor="#999999" BorderStyle="Solid" ForeColor="Black" Font-Size="Small" > <FooterStyle BackColor="#CCCCCC" /> <RowStyle BackColor="White" /> <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" /> <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="Black" ForeColor="White" /> </asp:GridView> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> </div> </form> </body> </html>
相关文章推荐
- 后台代码动态添加控件并自动换行
- GridView里面的内嵌的服务器控件如LinkButton如何传值?
- 模式窗口里面,服务器控件添加确认操作时,又弹出新窗口
- asp.net 服务器控件LinkButton等在后台代码中设置js事件或添加css样式
- GridView控件中添加CheckBox控件,并且实现选择、全选和反选
- gridView删除提示框----先改源码,自动添加控件
- QScrollArea里面添加控件的时候,自动滚到到最后
- Android设置Gridview中的内容不滚动,然后控件中的内容随便添加的效果。
- hbuider 中点击就显示出一个单选的列表 ,然后后台跨域向里面动态添加数据,注意里面的格式是json object
- gridview里面的按钮绑定值,并且点击传回到后台
- jquery CheckBox、RadioButton、DropDownList的取值赋值实现代码/服务器控件 gridview 循环
- Android设置Gridview中的内容不滚动,然后控件中的内容随便添加的效果。
- GridView1使用Label ,TextBox 及隐藏Label,让TextBox使用日期控件EditItemTemplate效果,并后台获其取值,
- 在WIN7 环境里PB里面添加控件OLE,选择insertcontrol选项卡就会报错自动关闭解决办法
- GridView里面的内嵌的服务器控件如LinkButton如何自定义操作?(已经解决)
- gridview里面的按钮绑定值,并且点击传回到后台
- Android设置Gridview中的内容不滚动,然后控件中的内容随便添加的效果。
- aspx后台页面添加服务器控件
- jQuery+ajax从数据库取值和和绑定前台html控件上,然后再通过ajax把值传到后台,让后台写入到数据库
- android 里给GridView里面的控件添加事件