Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

netian


Принципиальный молчун

Зарегистрирован:
12 May 2008
Сообщения: 5
Примеры кода: 0
 

Можно ли: различные ItemTemplate в одном списке?

13 May 2008 16:05  


увы, MultiView не подходит.. по причине того, что биндинг идет по всем View сразу, соответственно, если в каком-либо классе нет свойства указанного в биндинге, получаем DataBinding: 'ClassName' does not contain a property with the name 'PropertyName'.

смоделировать можно на этом примере<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListView ID="ListView1" runat="server" ItemPlaceholderID="itemPlaceholder" OnItemCreated="ListView_ItemCreated">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<asp:MultiView ID="MultiView1" ActiveViewIndex="0" runat="server">
<asp:View ID="FooView" runat="server">
<h1>FOO template</h1>
<div><%# Eval("Name") %></div>
<p> </p>
</asp:View>
<asp:View ID="BarView" runat="server">
<h1>BAR template</h1>
<div><%# Eval("Name") %></div>
<div><%# Eval("Description") %></div>
<p> </p>
</asp:View>
</asp:MultiView>
</ItemTemplate>
</asp:ListView>
</div>
</form>
</body>
</html>


using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Test : System.Web.UI.Page
{
	protected void Page_Load(object sender, EventArgs e)
	{
		if (!IsPostBack)
		{
			BindData();
		}
	}

	private void BindData()
	{
		ListView1.DataSource = GetList();
		ListView1.DataBind();
	}

	internal void ListView_ItemCreated(object sender, ListViewItemEventArgs e)
	{
		ListViewDataItem dataItem = (ListViewDataItem)e.Item;
		MultiView multiView = (MultiView)e.Item.FindControl("MultiView1");
		if (dataItem.DataItem is Bar)
			multiView.SetActiveView((View)e.Item.FindControl("BarView"));
		else
			multiView.SetActiveView((View)e.Item.FindControl("FooView"));
	}

	private IEnumerable<Foo> GetList()
	{
		yield return new Foo();
		yield return new Bar();
	}

	class Foo
	{
		public string Name { get { return GetType().ToString(); } }
	}

	class Bar : Foo
	{
		public string Description { get { return "description"; } }
	}
}
обойти можно, например ввести в иерархию классов дополнительное свойство
	class Foo
	{
		public virtual string Code { get { return "FOO"; } }
		public string Name { get { return GetType().ToString(); } }
	}

	class Bar : Foo
	{
		public override string Code { get { return "BAR"; } }
		public string Description { get { return "description"; } }
	}



и биндить опираясь на него
<div><%# Eval("Code") == "BAR" ? Eval("Description") : "" %></div>

но не нравится мне такое решение..
в общем склоняюсь к тому что ListView мне не подходит..
буду пробовать вариант SobakaWWW

или есть еще приемлемые варианты?


Данное сообщение получено с сайта GotDotNet.RU
Наверх
  



Общие вопросы программирования на ASP.NET

 Можно ли: различные ItemTemplate в одном списке?netian  12 May 2008 10:28
 Можно ли: различные ItemTemplate в одном списке?razon  12 May 2008 10:39
 Можно ли: различные ItemTemplate в одном списке?netian  13 May 2008 16:05
 Можно ли: различные ItemTemplate в одном списке?Евгений Веприков  13 May 2008 17:10
 Можно ли: различные ItemTemplate в одном списке?netian  12 May 2008 11:32
 Можно ли: различные ItemTemplate в одном списке?SobakaWWW  12 May 2008 11:26
 Можно ли: различные ItemTemplate в одном списке?netian  12 May 2008 11:34
 Можно ли: различные ItemTemplate в одном списке?SobakaWWW  12 May 2008 11:25
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта