Problem z poleceniem MudSelect.

0

Dzień dobry,
mam taki kod:

<MudSelect T="int" Label="LOGIN:" HelperText="Proszę wybrać login."Variant="Variant.Outlined" AnchorOrigin="Origin.BottomCenter" ValueChanged="WybranyUzytkownik" Style="padding-bottom:10px" >

    <MudSelectItem Value="1">Jacek</MudSelectItem>
    <MudSelectItem Value="2">Paweł</MudSelectIte
</MudSelect>

jak zrobić aby domyślnie w opcji wyboru była pusta wartość? Na chwilę obecną pojawia mi się wciąż liczba ,,0"
screenshot-20230705140528.png

1

Nie znam się (nic a nic), ale się wypowiem.

Jeśli to jest jakoś zanurzone w ekosystemie dotnetu, bym szukał w typie nullowalnym. "int" taki nie jest, hipotetycznie "int?" by był - o ile tak da sie napisac w ASP

jesi jest jak myślę, puste / null / nic nie wartością typu int

0
AnyKtokolwiek napisał(a):

Nie znam się (nic a nic), ale się wypowiem.

Jeśli to jest jakoś zanurzone w ekosystemie dotnetu, bym szukał w typie nullowalnym. "int" taki nie jest, hipotetycznie "int?" by był - o ile tak da sie napisac w ASP

jesi jest jak myślę, puste / null / nic nie wartością typu int

W MudSelect T="int" zamiast int dałem int? i było faktycznie puste, ale przy okazji wywaliło błąd:

warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
      Unhandled exception rendering component: Unable to set property 'IMudShadowSelect' on object of type 'MudBlazor.MudSelectItem`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. The error was: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
      System.InvalidOperationException: Unable to set property 'IMudShadowSelect' on object of type 'MudBlazor.MudSelectItem`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. The error was: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
       ---> System.InvalidCastException: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
         at MudBlazor.MudSelectItem`1.set_IMudShadowSelect(IMudShadowSelect value)
         at Microsoft.AspNetCore.Components.Reflection.PropertySetter.CallPropertySetter[TTarget,TValue](Action`2 setter, Object target, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         --- End of inner exception stack trace ---
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.SetProperties(ParameterView& parameters, Object target)
         at Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView parameters)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SupplyCombinedParameters(ParameterView directAndCascadingParameters)
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
      Unhandled exception in circuit '1g-NOPin7VNNC-N6w24e_9wiJPKIf2nA1UehzlaQdLI'.
      System.InvalidOperationException: Unable to set property 'IMudShadowSelect' on object of type 'MudBlazor.MudSelectItem`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. The error was: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
       ---> System.InvalidCastException: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
         at MudBlazor.MudSelectItem`1.set_IMudShadowSelect(IMudShadowSelect value)
         at Microsoft.AspNetCore.Components.Reflection.PropertySetter.CallPropertySetter[TTarget,TValue](Action`2 setter, Object target, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         --- End of inner exception stack trace ---
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.SetProperties(ParameterView& parameters, Object target)
         at Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView parameters)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SupplyCombinedParameters(ParameterView directAndCascadingParameters)
warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
0

Możesz dodać int? to itemów

<MudSelectItem T="int?" Value="1">Jacek</MudSelectItem>
<MudSelectItem T="int?" Value="2">Paweł</MudSelectItem>
0

@jarzi:

Tak od bardzo ogólnej strony, to jakby ma mało sensu.
Na poziomie rezultatu JEST SENS stwierdzić "wynik selecta może być null, nic, nothing"
Ale Item na chłopski rozum ma mieć nie-null, o to w tym wszystkim chodzi

Być może trzeba się ugiąć przed narzędziem, bywa, ale ...

Czyli (ciag dalszy mojej "genialnej" interpretacji) części renderujące akceptują nullable, ale reszta kodu wyraźnie nie.

@virusek391:

Google wykazuje pewną ilosć pozycji na MudSelect empty Item
W sumie z tym zerem mógłbyś żyć, GDYBY się nie prezentowało enuuserowi jako zero? Przynajmniej ja mógłbym.

1

@AnyKtokolwiek: jasne, można to rozwiązać w bardziej elegancki sposób. MudBlazor ma spoko dokumentacje i OnlinePlayground więc nawet nie trzeba bardzo się gimnastykować ;)

1

Na szybko znalazłem takie rozwiązanie, należy dodać poniższy fragment przed innymi mudami.

<MudSelectItem Value="0" Disabled="true">Select group type</MudSelectItem>
0
virusek391 napisał(a):
AnyKtokolwiek napisał(a):

Nie znam się (nic a nic), ale się wypowiem.

Jeśli to jest jakoś zanurzone w ekosystemie dotnetu, bym szukał w typie nullowalnym. "int" taki nie jest, hipotetycznie "int?" by był - o ile tak da sie napisac w ASP

jesi jest jak myślę, puste / null / nic nie wartością typu int

W MudSelect T="int" zamiast int dałem int? i było faktycznie puste, ale przy okazji wywaliło błąd:

warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]
      Unhandled exception rendering component: Unable to set property 'IMudShadowSelect' on object of type 'MudBlazor.MudSelectItem`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. The error was: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
      System.InvalidOperationException: Unable to set property 'IMudShadowSelect' on object of type 'MudBlazor.MudSelectItem`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. The error was: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
       ---> System.InvalidCastException: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
         at MudBlazor.MudSelectItem`1.set_IMudShadowSelect(IMudShadowSelect value)
         at Microsoft.AspNetCore.Components.Reflection.PropertySetter.CallPropertySetter[TTarget,TValue](Action`2 setter, Object target, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         --- End of inner exception stack trace ---
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.SetProperties(ParameterView& parameters, Object target)
         at Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView parameters)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SupplyCombinedParameters(ParameterView directAndCascadingParameters)
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
      Unhandled exception in circuit '1g-NOPin7VNNC-N6w24e_9wiJPKIf2nA1UehzlaQdLI'.
      System.InvalidOperationException: Unable to set property 'IMudShadowSelect' on object of type 'MudBlazor.MudSelectItem`1[[System.Int32, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. The error was: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
       ---> System.InvalidCastException: Unable to cast object of type 'MudBlazor.MudSelect`1[System.Nullable`1[System.Int32]]' to type 'MudBlazor.MudSelect`1[System.Int32]'.
         at MudBlazor.MudSelectItem`1.set_IMudShadowSelect(IMudShadowSelect value)
         at Microsoft.AspNetCore.Components.Reflection.PropertySetter.CallPropertySetter[TTarget,TValue](Action`2 setter, Object target, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         --- End of inner exception stack trace ---
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName, Object value)
         at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.SetProperties(ParameterView& parameters, Object target)
         at Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView parameters)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SupplyCombinedParameters(ParameterView directAndCascadingParameters)
warn: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]

Aktualizacja:
W moim przypadku zadziałał poniższy kod:

<MudSelect T="int" Label="LOGIN:" HelperText="Proszę wybrać login." Variant="Variant.Outlined" AnchorOrigin="Origin.BottomCenter" ValueChanged="WybranyUzytkownik" Style="padding-bottom:10px" >
<MudSelectItem Value="0">&nbsp;</MudSelectItem>

screenshot-20230706151223.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1