リストとGridViewの結合
-
20-09-2019 - |
質問
ここでは、私のクラスのいくつかのプロパティです。別のクラスのパブリック・オブジェクトの 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リストを持っています。私の定期的な分野に加えて、私も自分の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);
}
解決
あなたはのObjectDataSourceを使用することができます - SelectForGridを呼び出しラップし、また、あなたのGridViewにバインド一覧を指示することができます:
MyGrid.DataSoure = some. SelectForGrid();
MyGrid.DataBind();
データは* .aspxの/ ASCXコードにバインドされた場合、プロパティに列をバインドする必要があります。 評価およびバインドを使用すると、名前が、MarketingCampaignに明示的なキャストを使用するには、より高速な方法でそれを行うことができます。
<asp:TemplateField >
<ItemTemplate>
<%#((MarketingCampaign)Container.DataItem).Name%>
</ItemTemplate>
...
他のヒント
List<MarketingCampaign> mk= obj.SelectForGrid("Role");
GridView1.DataSource = mk;
GridView1.DataBind();
所属していません StackOverflow