Avatar
Jirka
Neregistrovaný
Avatar
Jirka:

Mam TextBox nabindovaný na DataTable, na TextBoxu mam vlastní validaci. Když text edituji validace bez problémů funguje. Problém mam, že po načtení se validace na načtená data neprovede. Netušíte někdo jak to vyřešit?

<TextBox HorizontalAlig­nment="Left" Height="23" Margin="10,94,0,0" TextWrapping="Wrap" VerticalAlignmen­t="Top" Width="120" Validation.Error="Va­lidation_Error">
<TextBox.Text>
<Binding Path="[hodnota]" UpdateSourceTrig­ger="PropertyChan­ged" ValidatesOnDa­taErrors="Tru­e" NotifyOnValida­tionError="Tru­e">
<Binding.Vali­dationRules>
<local:StringTo­IntValidation­Rule ValidationStep="Raw­ProposedValue"/>
</Binding.Vali­dationRules>
</Binding>
</TextBox.Text>
</TextBox>

public aaa()
{
InitializeCom­ponent();

DataTable dt = _App.dataTable("se­lect * from uzivatele where id = 1");
grdTesting.Da­taContext = dt.Rows[0];
}

public class StringToIntVa­lidationRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globali­zation.Culture­Info cultureInfo)
{
int i;
if (int.TryParse(va­lue.ToString(), out i))
return new ValidationResul­t(true, null);

return new ValidationResul­t(false, "Please enter a valid integer value.");
}
}

 
Odpovědět 4.3.2014 19:29
Avatar
Petr Domes (petrds):

Musíš zavolat validaci ručně.

myTextBox.Get­BindingExpres­sion(TextBox.Tex­tProperty).Up­dateSource();

Dělám na tutoriálu, kde se bude řešit validace.

 
Nahoru Odpovědět 4.3.2014 20:32
Avatar
Odpovídá na Jirka
Michal Štěpánek:

stejně jsem ti odopověděl i na dotnetportalu... Co chceš po NAČTENÍ dat validovat? Validace přece musela proběhnout už před uložením do DB a při načtení tedy musí být validní!

Nahoru Odpovědět 5.3.2014 6:20
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Petr Domes (petrds):

já to používám při vytváření nového záznamu, když se klikne na ulozit

 
Nahoru Odpovědět 5.3.2014 8:30
Avatar
Jirka
Neregistrovaný
Avatar
Odpovídá na Petr Domes (petrds)
Jirka :

Díky za radu. Vyzkouším to.
Taky to používám při vytváření nových záznamů, nebo při automatických úpravách které musí uživatel, upravit.

 
Nahoru Odpovědět 5.3.2014 9:10
Avatar
Jirka
Neregistrovaný
Avatar
Odpovídá na Petr Domes (petrds)
Jirka :

Mam ještě jeden problém.

Takto zobrazím chybu:
<Label HorizontalAlig­nment="Left" Height="23" Margin="10,66,0,0" VerticalAlignmen­t="Top" Width="272"
Content="{Binding Path=(Validati­on.Errors)[0]­.ErrorContent, ElementName=Ro­otElement}" />

Když je ale v Validation.Errors více chyb zobrazí se první chyba, já bych potřeboval poslední. Bohužel se mi nedaří něco jako:
Path=(Validati­on.Errors)[Va­lidation.Error­s.Length].Error­Content

Předem díky za jakoukoli pomoc.

 
Nahoru Odpovědět 5.3.2014 21:35
Avatar
Petr Domes (petrds):

(Validation.Errors) měla by to být kolekce, takže zkus
Path=(Validati­on.Errors)[Va­lidation.Error­s.Count-1].ErrorContent

 
Nahoru Odpovědět 5.3.2014 23:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.