【问题标题】:List<T> and GridView bindingList<T> 和 GridView 绑定
【发布时间】:2009-08-27 13:55:11
【问题描述】:

这是我班级的一些属性。还有另一个类 DNRole

的公共对象
    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 List。除了常规字段外,我还填充了 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);
                }

【问题讨论】:

    标签: asp.net gridview generic-list


    【解决方案1】:

    您可以使用 ObjectDataSource - 包装调用 SelectForGrid,也可以直接将 List 绑定到您的 GridView:

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

    当数据在 *.aspx/ascx 代码中绑定时,您需要将列绑定到属性: Eval 和 Bind 允许您按名称执行此操作,但使用显式强制转换为 MarketingCampaign 的方式更快。

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

    ...

    【讨论】:

    • 在这种情况下,我使用 ObjectDataSource。 Eval("Name") 使用常规字段来解决问题。我的问题是 listItem.DNRole.RoleName ...我不能只写 Eval("DNRole.RoleName")....
    • @Leon 然后你使用我写的关于直接投射的内容:((MarketingCampaign)Container.DataItem).DNRole.RoleName
    【解决方案2】:
    List<MarketingCampaign> mk= obj.SelectForGrid("Role");
    GridView1.DataSource = mk;
    GridView1.DataBind();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 2010-09-12
      • 2011-02-10
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多