用gridview动态创建模板列,却只能显示一行找不到原因,求解!!!!

fm4399 2017-11-14 10:22:51
我用网上给的方法,动态创建模板列,许多功能很实用,就是只能显示一行,其他都是空白
http://www.cnblogs.com/itshare/archive/2010/11/07/1871038.html
不知到怎么回事
下面是核心代码:
private void GeneralCols()
{
// 第1个模板列: Label
// HeaderTemplate Row
System.Collections.Generic.Dictionary<string, ControlField> controlFieldList1 = new System.Collections.Generic.Dictionary<string, ControlField>();
TemplateField col1 = new TemplateField();
col1.ShowHeader = true;
// CheckBox
System.Web.UI.WebControls.CheckBox chk = new CheckBox();
chk.ID = "chk";
//
System.Collections.Generic.Dictionary<string, string> fields0 = new System.Collections.Generic.Dictionary<string, string>();
fields0.Add("Checked", "isYes");
//
ControlField controlField0 = new ControlField(ControlTypeEnum.CheckBox, chk, fields0);
controlFieldList1.Add(chk.ID, controlField0);
//
MyTmeplateColumn col1_headerow = new MyTmeplateColumn(DataControlRowType.Header, "学生编号", controlFieldList1);
col1.HeaderTemplate = col1_headerow;

// ItemTemplate Row
System.Collections.Generic.Dictionary<string, ControlField> controlFieldList2 = new System.Collections.Generic.Dictionary<string, ControlField>();
//
System.Web.UI.WebControls.Label lblID = new Label();
lblID.ID = "lblID";
//
System.Collections.Generic.Dictionary<string, string> fields2 = new System.Collections.Generic.Dictionary<string, string>();
fields2.Add("Text", "ID");
//
ControlField controlField1 = new ControlField(ControlTypeEnum.Label, lblID, fields2);
controlFieldList2.Add(lblID.ID, controlField1);
//
// TextBox
System.Web.UI.WebControls.TextBox txtName = new TextBox();
txtName.ID = "txtName";
//
System.Collections.Generic.Dictionary<string, string> fields3 = new System.Collections.Generic.Dictionary<string, string>();
fields3.Add("Text", "Name");
//
ControlField controlField2 = new ControlField(ControlTypeEnum.TextBox, txtName, fields3);
controlFieldList2.Add(txtName.ID, controlField2);
//
MyTmeplateColumn col1_itemrow = new MyTmeplateColumn(DataControlRowType.DataRow, "学生编号", controlFieldList2);
col1.ItemTemplate = col1_itemrow;

gvShow.Columns.Add(col1);
//Bind();

}

private void Bind()
{
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("isyes", typeof(bool));
dt.Columns.Add("url", typeof(string));
DataRow dr = dt.NewRow();
dr[0] = "No123456";
dr[1] = "王晓巍";
dr[2] = true;
dr[3] = "http://www.baidu.com";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "No123456";
dr[1] = "王晓巍";
dr[2] = true;
dr[3] = "http://www.baidu.com";
dt.Rows.Add(dr);
//
gvShow.AutoGenerateColumns = false;
gvShow.HeaderStyle.BackColor = System.Drawing.Color.BlueViolet;
gvShow.HeaderStyle.ForeColor = System.Drawing.Color.FromName("#FFFFFF");
gvShow.HeaderStyle.Font.Name = "华文行楷";
gvShow.HeaderStyle.Font.Bold = true;
gvShow.RowStyle.BackColor = System.Drawing.Color.ForestGreen;
gvShow.GridLines = GridLines.Both;
gvShow.CellPadding = 3;
gvShow.CellSpacing = 0;
gvShow.DataSource = dt;
gvShow.DataBind();
}
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鱼> 2017-11-15
  • 打赏
  • 举报
回复
我在想是不是因为你的DataTable里面只有一行数据。因为没有具体看你实现的代码,你可以断点看一下dt里面有几行数据
fm4399 2017-11-15
  • 打赏
  • 举报
回复
自己再顶顶!!!!
fm4399 2017-11-15
  • 打赏
  • 举报
回复
没有人知道吗?拜托大家了
fm4399 2017-11-15
  • 打赏
  • 举报
回复
继续寻求答案!!!
fm4399 2017-11-15
  • 打赏
  • 举报
回复
问题没解决!
fm4399 2017-11-15
  • 打赏
  • 举报
回复
引用 4 楼 qq_17486399 的回复:
我在想是不是因为你的DataTable里面只有一行数据。因为没有具体看你实现的代码,你可以断点看一下dt里面有几行数据

dt中的确是两行数据,以上是断点截图
fm4399 2017-11-14
  • 打赏
  • 举报
回复

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧