Pokazywanie postów oznaczonych etykietą aspnet. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą aspnet. Pokaż wszystkie posty

wtorek, 29 grudnia 2009

Formatowanie double

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Double value = 14231891.32111;
            Console.WriteLine(String.Format("{0}", value));
            Console.WriteLine(String.Format("{0:00}", value));
            Console.WriteLine(String.Format("{0:n0}", value));
            Console.ReadLine();
        }
    }
}


wynik:

14231891,32111
14231891
14 231 891

poniedziałek, 21 grudnia 2009

Problemy z Accessem w VisualStudio

W przypadku problemów z użyciem bazy danych Access (poprzez OLE DB) w Visual Studio i uzyskiwaniem komunikatu polecam zainstalowanie:

MDAC 2.7 sp1

u mnie to pomogło :)

Property (właściwości) kontrolki - problem z ustaleniem wartości w aspx

Objawy:
- mimo prawidłowego ustawienia wartości dla właściwości nie jest ona widoczna w code-behind,
- wartość zmiennej występuje w kolekcji Attributes danej kontrolki,
- sprawa dotyczy strony (aspx) lub kontrolki (ascx)

to polecam (rozwiązanie):
- zmienić dostępność właściwości w code-behind na public. Protected, internal, private niestety powodują nieprawidłowe działanie.

czwartek, 3 grudnia 2009

DropDownList wewnątrz FormView

W sytuacji, kiedy załadowanie danych do DropDownList w FormView stanowi problem dobrym rozwiązaniem jest podpięcie się pod zdarzenie OnLoad konkretnej kontrolki DropDownList, a następnie tam wypełnienie jej. Np. w następujący sposób:

    protected void PeriodDropDownList_Load(object sender, EventArgs e)
    {
        DropDownList list = (DropDownList)sender;
        list.DataSource = EnumsHelper.IntoDictionary(typeof(Period));
        list.DataTextField = "Value";
        list.DataValueField = "Key";
    }

Jeszcze lepszym rozwiązaniem jest wykorzystanie OnDataBinding - zdarzenie wywoływane przed przypięciem danych. Dla OnLoad podczas zagnieżdżania FormView pojawił się problem z nadpisywaniem danych wybranych przez użytkownika.

piątek, 30 października 2009

Aplikacja serwera jest niedostępna

Czasem podczas korzystania z asp.net otrzymujemy inteligentny komunikat:

Aplikacja serwera jest niedostępna

jeżeli rozwiązania proponowane przez MS nie pomagają to polecam zrobić sobie listę aktualnie uruchomionych procesów w systemie (CTRL+SHIFT+ESC) a następnie ubijać po kilka i próbować odświeżyć stronę z interesującym komunikatem. Jeżeli po którymś ubijaniu ruszy - znaleziono przyczynę.

Sugerowane aplikacje do ubicia:
- Skype - skubany na porcie 80 coś tworzy (bodajże aktualizuje się?),
- IndicatorUty.exe - coś związanego z Fujitsu Siemens. Teoretycznie portu 80 nie przejmuje (przynajmniej netstat nie wskazuje nic na ten temat) jednak odpalić aplikacji nie można.

Gdyby komuś udało znaleźć się inny interesujący syf, to proszę o informację w komentarzach.

czwartek, 29 października 2009

Obsługa błędów przez ASP.NET

W ASP.NET często rzucane wyjątki warto ładnie obsługiwać. Brak jakiegokolwiek zajęcia się nimi prędzej czy później skończy się fatalnie dla programisty: poprzez wyjawienie newralgicznych danych lub też po prostu poprzez zyskanie złej opinii.

Jednym ze sposobów ukrycia błędów przed użytkownikiem jest prawidłowe skonfigurowanie sekcji customErrors w pliku web.config. Niestety mimo wielu prób nie udało mi się uzyskać tam informacji o ostatnim błędzie poprzez metodę:

Server.GetLastError();

Rozwiązaniem znalezionym przy pomocy google jest skorzystanie z Global.asax i metody application_Error.Tam wyjątek można zserializować i wrzucić do sesji, a następnie przekierować użytkownika do ładnie wyglądającej strony.

Może rozwiązanie nie idealne, ale dotychczas spełniające swoje zadanie.

piątek, 4 lipca 2008

Linq - Specified cast is not valid.

Często zdarza się, że w trakcie wstawiania/aktualizacji rekordów rzucany jest błąd: "

Specified cast is not valid."

nieszczęśliwie stos niczego ciekawego nie pokazuje. Dotarcie do przyczyny zajmuje trochę czasu a i google początkowo nie pokazuje odpowiednich wyników.

Mi udało się przegrzebać przez wyniki wyszukiwania i odpowiedź jest dość śmieszna:

Jeśli tabelka aktualizowana ma klucz obcy, do innej tabelki, której klucz główny nie jest liczbą, to klops. Ogólne przesłanie -> nie używać kluczy głównych w formie np. guid. Tylko sztuczne są dobre :-)

piątek, 30 maja 2008

System.Data.SqlClient.SqlException: Login failed for user 'MachineName\ASPNET'

Maj się kończy, a wpisów na blogu niezbyt wiele :-)

Dziś tylko informacja o problemie, na który napotyka się co jakiś czas, mianowicie:

System.Data.SqlClient.SqlException: Login failed for user 'MachineName\ASPNET'


Znalazłem rozwiązanie, aczkolwiek nie do końca bezpieczne:

sp_addrolemember 'db_owner', 'MachineName\ASPNET'

Jednak dla maszyny developerskiej nie powinno być problemu.

piątek, 2 maja 2008

Ciekawy kawałek kodu - FindControl

Przed chwilą uratował mi trochę czasu :) [Był problem z findcontrol dla masterpage-sa, gdy kontrolki były ukryte wewnątrz wizard-a.]


private Control FindControl(Control parent, string id)

{

if (parent.ID == id)

{ return parent; }

foreach (Control child in parent.Controls)

{

Control recurse = FindControl(child, id);

if (recurse != null)

{ return recurse; }

}

return null;

}

wtorek, 12 lutego 2008

IPostBackDataHandler ożywiony

Kawałek kodu kontrolki:


public class
Class1 : CompositeControl, IPostBackDataHandler
{
protected override void CreateChildControls()
{
TextBox txtBox = new TextBox();
txtBox.ID = "t1";

Controls.Add(txtBox);
}

public bool LoadPostData(string postDataKey,
System.Collections.Specialized.NameValueCollection
postCollection)
{
throw new Exception("The LoadPostData method or operation is
not implemented."
);
}

public void RaisePostDataChangedEvent()
{
throw new Exception("The RaisePostDataChangedEvent method or
operation is not implemented."
);
}
}

I pytanie dlaczego nie działa LoadPostData? Bo jeszcze trzeba:

Page.RegisterRequiresPostBack(this)

Na stronie gdzie się to umieszcza. Tylko czemu u licha nie widzę tego na stronie MS od razu?


poniedziałek, 28 stycznia 2008

LoginView, LoginStatus - wylogowanie użytkownika (user logout)

Dużo się nabiegałem, żeby znaleźć rozwiązanie problemu wylogowania użytkownika przy pomocy własnego kodu, a nie kontrolki ViewStatus. Czyszczenie sesji nic nie dało. Czyszczenie Cookies nic nie dało. Jedno co dało, to:

FormsAuthentication.SignOut();

Warto znać. Na przyszłość ;-)