2009-08-27 47 views
0

以下是我的课程的一些属性。还有另一个类DNRole列表<T>和GridView绑定

private Int32 _IDMarketingCampaign; 
    private String _Name; 

    public Int32 IDMarketingCampaign 
    { 
     get { return _IDMarketingCampaign; } 
     set { _IDMarketingCampaign = value; } 
    } 
    public String Name 
    { 
     get { return _Name; } 
     set { _Name = value; } 
    } 
    public DPRole DNRole = new DPRole(); 

的公共对象在同一类我有一个方法returnig列表。除了我的常规字段外,我还在填充我的DNRole对象的一个​​字段:

listItem.DNRole.RoleName = dr [“RoleNameFK”]。ToString();

我的问题是......这是合法的,应该怎么做,如果是,我该如何在girdview中显示数据?

public List<MarketingCampaign> SelectForGrid(string strRoleName) 
     { 
      List<MarketingCampaign> lista = new List<MarketingCampaign>(); 
      SqlCommand command = new SqlCommand("fra_MarketingCampaignSelectForGrid ", conn); 
      command.CommandType = CommandType.StoredProcedure; 
      command.Parameters.Add("RoleName", SqlDbType.VarChar).Value = strRoleName; 
      SqlDataReader dr = null; 
      try 
      { 
       conn.Open(); 
       dr = command.ExecuteReader(); 
       while (dr.Read()) 
       { 
        MarketingCampaign listItem = new MarketingCampaign(); 

        listItem.IDMarketingCampaign = Convert.ToInt32(dr["IDMarketingCampaign"]); 
        listItem.Name = dr["Name"].ToString(); 
        listItem.DNRole.RoleName = dr["RoleNameFK"].ToString(); 
        ... 
        lista.Add(listItem); 
       } 

回答

3

您可以使用ObjectDataSource控件 - 包呼叫SelectForGrid,也可以直接绑定列表以你的GridView:

MyGrid.DataSoure = some. SelectForGrid(); 
MyGrid.DataBind(); 

当数据在*的.aspx/ASCX代码绑定需要绑定列属性: Eval和Bind允许您按名称执行此操作,但可以使用显式投影到MarketingCampaign的更快方式。

<asp:TemplateField > 
    <ItemTemplate> 
     <%#((MarketingCampaign)Container.DataItem).Name%> 
    </ItemTemplate> 

...

+0

在这种情况下,我使用的ObjectDataSource。 Eval(“Name”)用常规字段来做这个诀窍。我的问题是,listItem.DNRole.RoleName ...我不能只是去写Eval(“DNRole.RoleName”).... – Leon

+0

@Leon然后你使用我写的关于直接演员: ((MarketingCampaign )Container.DataItem).DNRole.RoleName – Dewfy

+0

@Dewfy我明白了...谢谢。这很好用! – Leon

0
List<MarketingCampaign> mk= obj.SelectForGrid("Role"); 
GridView1.DataSource = mk; 
GridView1.DataBind();