Спасибо, можно будет поиграться на досуге. Но, самое идеально решение, я думаю будет вместо обычного select использовать что-нибудь кастомное, например select на div'ах, но так как изначально везде на проекте использовался обычный селект, и как часто это происходит, нужен был срочный fix, получилось такое решение. Начало есть, можно развивать :)
Все зависит от верстки, если справа от контролов достаточно места для самого длинного value в option, то все будет отлично. Но тут я согласен, решение не универсальное. Можно попробовать динамически изменять «position» на событии mouseover и возвращать в исходное состояние после того как фокус потерян.
А у всех работает поиск по улицам нормально? я вот например Любимова в минске найти не могу, в волгограде или владивостоке только находит, да и воообще половина улиц на русском не находятся, даже если набираешь, как и должно быть название в игре (прим. «Рафиева Пр.»)
Мне кажеться он ничем не отличается в плане сборки от родителя… Единственное, что при правильно сборки у него каждая грань будет окрашена в 2 цвета, присмотритесь — тот же кубик 3 на 3, но среднее кольцо — 2 цвета и крутиться каждый кубик (круг) при воротах кубика за верхнюю или нижнюю грань.
У себя на проектаххраню вьюстейт в сессии (изначально было в кеше, потом переписывлось для сессии):
public class CachePageStatePersister: PageStatePersister
{
public CachePageStatePersister(Page page): base(page)
{}
public override void Load()
{
// Get the cache key from the web form data
string key = Page.Request.Params["__VIEWSTATE_CACHEKEY"];
// Abort if cache key is not available or valid
if (String.IsNullOrEmpty(key) || !key.StartsWith(«VIEWSTATE_»))
return;
// throw new ApplicationException(«Missing vaild __VIEWSTATE_CACHEKEY»);
Pair state = Page.Session[key] as Pair;
// Abort if cache object is not of type Pair
if (state == null)
return;
// throw new ApplicationException(«Missing vaild __VIEWSTATE_CACHEKEY»);
// Set view state and control state
ViewState = state.First;
ControlState = state.Second;
}
public override void Save()
{
// No processing needed if no states available
if (ViewState == null && ControlState == null)
return;
Одно дело малоизвестные фишки языка, которыми нечасто пользуются и из-за этого могут быть незнакомы, как yield и reftype. А другое дело стандартные конструкции, без которых никак enum, event, и т. д. А тут намешано все в кучу… Вот вам в коллекцию, может кто не знает:
можно использовать в качестве названия переменной зарезервированные слова, например «int» надо только перед этой переменной всегда ставить собачку:
Пр:
int @int =5;
Console.Write("{0} — это пять!", @int);
неделя не так уж и много ;-) у на в Беларуси о анлиме можно пока только мечтать, а так 50 гиг обойдеться в 50 уе… Проще купить второй веник и в рейд ;=]
Спасибо, мне было бы интересно посмотреть на примеры готовых SRS (FDS), шаблоны оформления, а также ту спецификацию, которую можно считать идеальной. Причем будь-то CMS, Ecommerce или Social Network, в этих проектах, я уверен, есть свои шаблоны и идеалы ;-) Если автор найдет такое и добавит в статью, будет просто замечательно
С примером сложнее, так как негде выложить, использовал этот метод на одном из внутренних проектов.
public class CachePageStatePersister: PageStatePersister
{
public CachePageStatePersister(Page page): base(page)
{}
public override void Load()
{
// Get the cache key from the web form data
string key = Page.Request.Params["__VIEWSTATE_CACHEKEY"];
// Abort if cache key is not available or valid
if (String.IsNullOrEmpty(key) || !key.StartsWith(«VIEWSTATE_»))
return;
// throw new ApplicationException(«Missing vaild __VIEWSTATE_CACHEKEY»);
Pair state = Page.Session[key] as Pair;
// Abort if cache object is not of type Pair
if (state == null)
return;
// throw new ApplicationException(«Missing vaild __VIEWSTATE_CACHEKEY»);
// Set view state and control state
ViewState = state.First;
ControlState = state.Second;
}
public override void Save()
{
// No processing needed if no states available
if (ViewState == null && ControlState == null)
return;
StringBuilder key = new StringBuilder();
// Generate a unique cache key
key.Append(«VIEWSTATE_»)
.Append(Page.Session != null? Page.Session.SessionID: Guid.NewGuid().ToString())
.Append("_")
.Append(Page.Request.RawUrl)
.Append("_")
.Append(DateTime.Now.Ticks.ToString());
// Save view state and control state separately
Pair state = new Pair(ViewState, ControlState);
// Add view state and control state to cache
// Page.Cache.Add(
// key.ToString(),
// state,
// null,
// DateTime.Now.AddMinutes(15),
// Cache.NoSlidingExpiration,
// CacheItemPriority.Default,
// null
// );
if(Page.Session[key.ToString()] == null)
Page.Session.Add(key.ToString(), state);
// Register hidden field to store cache key in
Page.Clientscript.RegisterHiddenField("__VIEWSTATE_CACHEKEY", key.ToString());
}
}
* This source code was highlighted with Source Code Highlighter.
можно использовать в качестве названия переменной зарезервированные слова, например «int» надо только перед этой переменной всегда ставить собачку:
Пр:
int @int =5;
Console.Write("{0} — это пять!", @int);
з.ы. привет 2:450/258 ;-)
на поинтовках помню все друг друга по номерам называли, я был 20-ым ;) И сейчас иногда встречу, то 1ого, то 44го ;)