Programování v C#.Net » Xabatcha blog - Live and let live
MyEgo.cz
Prázdný Exception.StackTrace
Při použití vnitrofiremní knihovny pro logování v Net aplikacích jsem se dostal do problému, kdy se zpráva logovala do databáse. V tomto případě SQL Server 2000. Při hledání řešení jsem narazil na několik chyb. Zde musím říci, že je mimo mou moc něco změnit v této knihovně. Což mě nečiní moc šťastným, spíše naopak.
Chybou bylo, že pokud byla nějaká vstupní hodnota rovna null, v mém případě StackTrace z Exception objektu, tak to padalo jemně na pusu. Důvodem je, že SQL Server neakceptuje null hodnotu tak jak ji interpretuje Dot.Net. Musí se provést test hodnoty na null hodnotu a pokud je object roven null, musí se přiřadit jiná null hodnota, které SQL Server rozumí. V tomto případě System.DBNull.Value.
SCSF - trable se spouštěním
Pro ty kdo ještě neví co je to SCSF alias Smart Client Software Factory nechť následují bílého králíka.
Začal jsem se seznamovat s tímto programovacím modelem a narazil jsem na pár záludných chyb.
První byl problém po instalaci při vytváření nového SCSF projektu ve VS2005, kdy celý proces spadl a zahlásil chybu, že nemůže vytvořit nové solution a v error message byl odkaz na nějaké chybějící VB soubory. Dle informaci na stránkách projektu jde o dnes již vyřešený bug a to buď nutnou doinstalací Visual Basicu nebo s modifikací instalačního balíčku případně nainstalované verze.
StrongType pro přístup k WebPage v ASP.Net kódu
Jedno krátké, ale podle mne docela elegantní řešení jak přistupovat ke stránkám pomocí [entry=423]strong type[/entry].
Implementace
[codebox]
namespace YourNamespace.Presentation.TemplateManager
{
public class TemplateBrowserPage : Page{
#region Strong type page path
private const string PAGE="/TemplateManager/TemplateBrowser.aspx";
public static string UrlToSelf() {
return HttpContext.Current.Request.ApplicationPath + PAGE;
}
#endregion
private void Page_Load(object sender, EventArgs e)
{
// Put user code to initialize the page here
}
}
}[/codebox]
Pro přidání querystringu přetížíte metodu UrlToSelf a přidáte požadovaný počet vstupních parametrů a pomocí metody string.Format vytvoříte řetězec, který vrátíte jako výstupní parametr. Řetězec bude obsahovat kompletní adresu včetně přiřazených vstupních parametrů.
Použití
Závěr
Cílem tohoto řešení je zamezení vzniku chyby špatným opsáním názvu stránky a vytvoření jen jednoho místa, které vrací správnou cestu k daně stránce jako řetězec textu.
Henselmanuv seznam IT otázek pro pohovory II.
A máme tu další pokračování IT otázek a odpovědí od mistra Henselmanna.
6. Vyjmenujte alespoň tři typy kontejnerů obsaženy v OS Windows
Component - třída implementující rozhraní IComponent.
Control - třída dědí třídu System.Windows.Forms.Control a System.Web.UI.Control . Objekt typu Control je vlastně objekt typu Component, která má navíc vlastnosti pro visuální zobrazení.
Container - třída implementující rozhraní System.ComponentModel.IContainer. Místo pro objekty typu Control a Component.
Příklad:
[codebox]Private Class ControlWalker
Private mContainer As Object
Public Sub New(ByVal Container As Object)
Dim cControl As Control
If Container.haschildren Then
For Each cControl In Container.controls
'add this control to the controls collection
m_controls.Add(cControl)
If cControl.HasChildren Then
'This control has children, create another
'ControlWalk go visit each of them
Dim cWalker As New ControlWalker(cControl)
End If
Next cControl
End If
End Sub
End Class[/codebox]
Henselmanuv seznam IT otázek pro pohovory
Když jsem hledal práci, tak jsem se snažil připravit na všemožné otázky z oblasti programování. Na internetu jsem narazil na velice inspirativní článek What Great developer ought to know. Článek obsahuje velice široký seznam otázek z oblasti programování s Net frameworkem. Během přípravy jsem se dostal do stádia, kdy jsem se dopracoval k většině odpovědí. Netvrdím, že odpovědi jsou stoprocentně pravdivé a dokonalé a právě i proto je chci po malých částech publikovat zde na blogu s očekáváním jisté reakce od širokého publika. Takže od nynějška se budete moci setkávat s malými dávkami otázek od pana Henselmana.
A tady je prvních pět:
ASP.Net 2.0 - Opakované volání submitu pro Image v CommandFieldu v GridView
ASP.Net 2.0, GridView - použití Image v commandFieldu
Při použití image v CommandFieldu se vyskytne bug, který vyvolává opakovaně postback. V mém případě to vyvolávalo opakované mazáni v datovém zdroji. Což mě samozřejmě vyhazovalo chybu. Tento bug je již řešen v MS a dokonce zde existuje několik řešení.
1. použít button typu Link nebo Button, tím ale ztratíte možnost mít obrázek na buttonu
2. použít konstrukci:
[codebox]
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat=server id="ImageButton1" CommandName="Delete" ImageUrl="..." CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' OnCommand="ImageButton1_Command" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>