在page_load的事件中动态添加模版列:
public class GridViewTemplate : ITemplate
{
ListItemType templateType;
string columnName;
public GridViewTemplate(ListItemType type, string colname)
{
templateType = type;
columnName = colname;
} public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case ListItemType.Header:
//lc.Text = "<B>" + columnName + "</B>";
//container.Controls.Add(lc);
break;
case ListItemType.Item:
DropDownList drr = new DropDownList();
drr.ID = "dropdown";
drr.AppendDataBoundItems = true;
drr.Items.Add(new ListItem("-----请选择------", ""));
drr.Items.Add(new ListItem("AA", "a"));
drr.Items.Add(new ListItem("BB", "b"));
drr.Items.Add(new ListItem("CC", "c"));
container.Controls.Add(drr);
break;
case ListItemType.EditItem:
//TextBox tb = new TextBox();
//tb.Text = "";
//container.Controls.Add(tb);
break;
case ListItemType.Footer:
//lc.Text = "<I>" + columnName + "</I>";
//container.Controls.Add(lc);
break;
}
}
}//page_load事件中邦定模版列
TemplateField field = new TemplateField();
field.HeaderStyle.Wrap = false;
field.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
field.HeaderText = tab.Rows[0]["show_name"].ToString();
//field.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "");
field.ItemTemplate = new GridViewTemplate(ListItemType.Item, "");
this.GridView1.Columns.Add(field);
在gridviw翻页时模版列中的控件丢失
这种情况该怎么解决?
public class GridViewTemplate : ITemplate
{
ListItemType templateType;
string columnName;
public GridViewTemplate(ListItemType type, string colname)
{
templateType = type;
columnName = colname;
} public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case ListItemType.Header:
//lc.Text = "<B>" + columnName + "</B>";
//container.Controls.Add(lc);
break;
case ListItemType.Item:
DropDownList drr = new DropDownList();
drr.ID = "dropdown";
drr.AppendDataBoundItems = true;
drr.Items.Add(new ListItem("-----请选择------", ""));
drr.Items.Add(new ListItem("AA", "a"));
drr.Items.Add(new ListItem("BB", "b"));
drr.Items.Add(new ListItem("CC", "c"));
container.Controls.Add(drr);
break;
case ListItemType.EditItem:
//TextBox tb = new TextBox();
//tb.Text = "";
//container.Controls.Add(tb);
break;
case ListItemType.Footer:
//lc.Text = "<I>" + columnName + "</I>";
//container.Controls.Add(lc);
break;
}
}
}//page_load事件中邦定模版列
TemplateField field = new TemplateField();
field.HeaderStyle.Wrap = false;
field.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
field.HeaderText = tab.Rows[0]["show_name"].ToString();
//field.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "");
field.ItemTemplate = new GridViewTemplate(ListItemType.Item, "");
this.GridView1.Columns.Add(field);
在gridviw翻页时模版列中的控件丢失
这种情况该怎么解决?
我是用这种方法..不知还有未更好的!
没用过Viewstate,能说想详细些吗?
或举个简单的例子
<a href='xx.aspx?page=1'>1</a> <a href='xx.aspx?page=2'>1</a> ...就不会有问题的
在GridView1_RowDataBound事件中为静态模版控件邦定数据,客户端事件
翻页时点一次可以正常翻页,在点就会报错,找不到对象实例
动态生成的模版控件的数据邦定实在gridview数据绑定后
this.GridView1.DataSource = databing();
this.GridView1.DataBind();
//动态生成的模版控件的数据邦定for (int i = 0; i < GridView1.Rows.Count; i++)
{
TableRow tr = new TableRow();
TableCell td = new TableCell();
HyperLink HyperLink1 = new HyperLink();
Label lbl = new Label();
string activity = tab.Rows[i]["activity"].ToString();
string[] stract = activity.Split(','); for (int h = 0;h < stract.Length - 1; h++)
{
HyperLink1 = new HyperLink(); HyperLink1.ID = "HyperLink" + stract[h];
HyperLink1.Text = "*";
HyperLink1.ForeColor = Color.Red;
HyperLink1.Target = "_top";
HyperLink1.NavigateUrl = "../Detaile.aspx?id=" + stract[h] + "&mainch=1&subch=activity&menuid=activity&itemid=activity025"; lbl = new Label();
lbl.Text = " "; td.Controls.Add(HyperLink1);
td.Controls.Add(lbl);
}
tr.Cells.Add(td);
((Table)e.Row.FindControl("Table6")).Rows.Add(tr);
}
GridView1_RowDataBound事件中,也有这样的错误,
静态模版列 未将对象引用设置到对象的实例。