C# 以编程方式将非数据绑定列添加到gridview

C# 以编程方式将非数据绑定列添加到gridview,c#,asp.net,C#,Asp.net,我想在第_load()页的gridview中添加一列 这是我想添加的标签。我的数据源中有ID。。但是我不想显示Id,我必须在我的对象模型中查找Id并用名称替换它 所以,我需要一个这样的标签: <asp:Label ID="1234" runat="server" OnDataBinding="BindName" /> 这是我在ascx文件中正在做的事情。。在TemplateField内部 我想通过编程在代码隐藏中做同样的事情 有什么想法吗?GridView有一个名为RowDat

我想在第_load()页的gridview中添加一列

这是我想添加的标签。我的数据源中有ID。。但是我不想显示Id,我必须在我的对象模型中查找Id并用名称替换它

所以,我需要一个这样的标签:

<asp:Label ID="1234" runat="server" OnDataBinding="BindName" />

这是我在ascx文件中正在做的事情。。在TemplateField内部

我想通过编程在代码隐藏中做同样的事情


有什么想法吗?

GridView有一个名为RowDataBound的事件。用那个。在此列的标记中有一个TemplateColumn。在RowDataBound事件中,执行如下操作(粗略示例):


您需要创建一个实现ITemplate接口的类

public class TemplateImplementation : ITemplate
{
    public void InstantiateIn(Control container)
    {
        Label label = new Label();
        label.DataBinding += Label_DataBinding;
        container.Controls.Add(label);
    }
    void Label_DataBinding(object sender, EventArgs e)
    {
        Label label = (Label)sender;
        object dataItem = DataBinder.GetDataItem(label.NamingContainer);
        string sName = /* Lookup your name using the dataitem here here */;
        label.Text = sName;
    }
}
然后创建TemplateColumn并将ItemTemplate设置为此类的实例

TemplateColumn lblColumn = new TemplateColumn();
lblColumn.ItemTemplate = as;
grdMyGrid.Columns.Add(lblColumn);
ASPX源

 <asp:GridView ID="sampleGridView" Runat="server" DataSourceID="sampleDataSource">
    <Columns>
     <asp:TemplateField HeaderText="Territories">
        <ItemTemplate>
     <asp:Label ID="1234" runat="server"/>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderText="FirstName" DataField="FirstName" 
           SortExpression="FirstName"></asp:BoundField>
        <asp:BoundField HeaderText="LastName" DataField="LastName" 
           SortExpression="LastName"></asp:BoundField>
</Columns>

谢谢大家的帮助和解决办法。@Mike J
lblColumn.ItemTemplate=as中的
as
是什么
here?@Bishan应该是
lblColumn.ItemTemplate=newtemplateImplementation()此外,对于GridView,您需要创建TemplateField,而不是TemplateColumn。TemplateColumns用于数据网格。@MikeJ如何将
标签添加到
网格视图中现有的
TemplateField
 <asp:GridView ID="sampleGridView" Runat="server" DataSourceID="sampleDataSource">
    <Columns>
     <asp:TemplateField HeaderText="Territories">
        <ItemTemplate>
     <asp:Label ID="1234" runat="server"/>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderText="FirstName" DataField="FirstName" 
           SortExpression="FirstName"></asp:BoundField>
        <asp:BoundField HeaderText="LastName" DataField="LastName" 
           SortExpression="LastName"></asp:BoundField>
</Columns>
void sampleGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
    Label bl = (Label)e.Row.FindControl("1234");
    bl.Text= ((DataRowView) e.Row.DataItem)["ID"].ToString();
  }
}