您的位置:首页 > 其它

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐