C# 使用循环创建需要填充列的动态Gridview表
现在我有了一个Gridview,其中包含以下代码:C# 使用循环创建需要填充列的动态Gridview表,c#,asp.net,gridview,C#,Asp.net,Gridview,现在我有了一个Gridview,其中包含以下代码: <asp:GridView CssClass="grdInspStra" ID="grdInspStra" runat="server" AutoGenerateColumns="false" OnRowCreated="grdInspStra_RowCreated"> <AlternatingRowStyle CssClass="grdItemEven" /> <Columns>
<asp:GridView CssClass="grdInspStra" ID="grdInspStra" runat="server" AutoGenerateColumns="false" OnRowCreated="grdInspStra_RowCreated">
<AlternatingRowStyle CssClass="grdItemEven" />
<Columns>
<asp:TemplateField HeaderText="Zone Code" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblZone" runat="server" Text='<%# Eval("ZoneCode")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Group Code" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblGroup" runat="server" Text='<%# Eval("GroupCode")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Component Code" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblComp" runat="server" Text='<%# Eval("ComponentCode")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Component Tag No." ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblCompTagNo" runat="server" Text='<%# Eval("ComponentTagRef")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Risk Category" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblRiskCat" runat="server" Text='<%# Eval("RiskCategory")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Proposed Interval" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblInterval" runat="server" Text='<%# Eval("ProposedInterval")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Latest Date" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblDateLatest" runat="server" Text='<%# Eval("DateLI")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="H1" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblFirstHalf0" runat="server" Text='<%# Eval("FirstHalf0")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="H2" ItemStyle-CssClass="grdItemCenter">
<ItemTemplate>
<asp:Label ID="lblSecondHalf0" runat="server" Text='<%# Eval("SecondHalf0")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我设法在页面加载中使用创建列
TemplateField tfield;
for (int i = 0; i < 31; i++)
{
tfield = new TemplateField();
tfield.HeaderText = "H1";
grdInspStra.Columns.Add(tfield);
tfield = new TemplateField();
tfield.HeaderText = "H2";
grdInspStra.Columns.Add(tfield);
}
有人能帮我解决这个问题吗?午休后,我设法解决了这个问题 在
类标签列中:ITemplate
只需添加inti
,示例
class LabelColumn : ITemplate
{
int i;
public LabelColumn(int i)
{
this.i = i;
}
public void InstantiateIn(Control container)
{
Label label = new Label();
label.ID = "lblSecondHalf" + i;
label.DataBinding += new EventHandler(label_DataBinding);
container.Controls.Add(label);
}
private void label_DataBinding(Object sender, EventArgs e)
{
Label label = (Label)sender;
GridViewRow row = (GridViewRow)label.NamingContainer;
label.Text = DataBinder.Eval(row.DataItem, "SecondHalf" + i).ToString();
}
}
午休后我设法解决了这个问题 在
类标签列中:ITemplate
只需添加inti
,示例
class LabelColumn : ITemplate
{
int i;
public LabelColumn(int i)
{
this.i = i;
}
public void InstantiateIn(Control container)
{
Label label = new Label();
label.ID = "lblSecondHalf" + i;
label.DataBinding += new EventHandler(label_DataBinding);
container.Controls.Add(label);
}
private void label_DataBinding(Object sender, EventArgs e)
{
Label label = (Label)sender;
GridViewRow row = (GridViewRow)label.NamingContainer;
label.Text = DataBinder.Eval(row.DataItem, "SecondHalf" + i).ToString();
}
}
TemplateField tfield;
for (int i = 0; i < 31; i++)
{
tfield = new TemplateField();
tfield.HeaderText = "H1";
tfield.ItemStyle.CssClass = "grdItemCenter";
grdInspStra.Columns.Add(tfield);
tfield = new TemplateField();
tfield.HeaderText = "H2";
tfield.ItemStyle.CssClass = "grdItemCenter";
tfield.ItemTemplate = new LabelColumn();
grdInspStra.Columns.Add(tfield);
}
class LabelColumn : ITemplate
{
public void InstantiateIn(Control container)
{
Label label = new Label();
label.ID = "lblSecondHalf";
label.DataBinding += new EventHandler(label_DataBinding);
container.Controls.Add(label);
}
private void label_DataBinding(Object sender, EventArgs e)
{
Label label = (Label)sender;
GridViewRow row = (GridViewRow)label.NamingContainer;
label.Text = DataBinder.Eval(row.DataItem, "SecondHalf0").ToString();
}
}
class LabelColumn : ITemplate
{
int i;
public LabelColumn(int i)
{
this.i = i;
}
public void InstantiateIn(Control container)
{
Label label = new Label();
label.ID = "lblSecondHalf" + i;
label.DataBinding += new EventHandler(label_DataBinding);
container.Controls.Add(label);
}
private void label_DataBinding(Object sender, EventArgs e)
{
Label label = (Label)sender;
GridViewRow row = (GridViewRow)label.NamingContainer;
label.Text = DataBinder.Eval(row.DataItem, "SecondHalf" + i).ToString();
}
}