Laden...

Bind kombinieren?

Erstellt von Phil_B vor 14 Jahren Letzter Beitrag vor 14 Jahren 821 Views
P
Phil_B Themenstarter:in
120 Beiträge seit 2008
vor 14 Jahren
Bind kombinieren?

Hallo,

ich suche nach einer Möglichkeit zwei Bind-Ergebnisse in einem Control zu kombinieren:

Mein Code bislang, funktioniert auch wie gewünscht:
Das GirdView beinhaltet folgendes ItemTemplate:


<ItemTemplate>
    <asp:Label runat="server" ID="lab_userSurname" Text='<%# Bind("UserSurname") %>' />
    <asp:Label runat="server" Text=", " />
    <asp:Label runat="server" ID="lab_userName" Text='<%# Bind("UserName")%>' />
</ItemTemplate>

Nun wollte ich die Labels durch einen Button ersetzen. Un da das dann blöd aussieht, wenn da dann zwei Buttons sind, habe ich versucht, die <%# Bind("")%> Ergebnisse in einer Text-Eigenschaft für meinen Button zu kombinieren. Leider bislang ohne Erfolg:


<ItemTemplate>
    <asp:Button runat="server" ID="btn_userName" Text='<%# Bind("UserSurname") %> + <%# Bind("UserName") %>' />
</ItemTemplate>

Hat jemand eine Idee, wie ich das mit dem Button realisieren könnte?

T
574 Beiträge seit 2008
vor 14 Jahren

Arbeite im asp.net kaum so mit Binds aber probier mal:


<ItemTemplate>
    <asp:Button runat="server" ID="btn_userName" Text='<%# Bind("UserSurname") + Bind("UserName") %>' />
</ItemTemplate>

63 Beiträge seit 2007
vor 14 Jahren

Versuchs mal damit:

<ItemTemplate>
    <asp:Button runat="server" ID="btn_userName" Text='<%# Bind("UserSurname") + ' ' + Bind("UserName") %>' />
</ItemTemplate>

oder auch

<ItemTemplate>
    <asp:Button runat="server" ID="btn_userName" Text='<%# Convert.ToString(DataBinder.Eval(Container.DataItem, "UserSurname")) + ' ' + Convert.ToString(DataBinder.Eval(Container.DataItem, "UserName")) %>' />
</ItemTemplate>
691 Beiträge seit 2007
vor 14 Jahren

Wieso verwendest du an dieser Stelle überhaupt ein Bind? Da du dem Wert ja nichts zuweisen kannst, wäre hier ein Eval angebracht.

Als Alternative steht dir natürlich immer noch das RowDataBound Event des GV zur Verfügung.

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de

P
Phil_B Themenstarter:in
120 Beiträge seit 2008
vor 14 Jahren

Vielen Dank @ vandango!

  
<ItemTemplate>  
    <asp:Button runat="server" ID="btn_userName" Text='<%# Convert.ToString(DataBinder.Eval(Container.DataItem, "UserSurname")) + ' ' + Convert.ToString(DataBinder.Eval(Container.DataItem, "UserName")) %>' />  
</ItemTemplate>  

Das hat mich meiner Lösung näher gebracht.
Die Syntax akzeptiert der Compiler allerdings nicht so. Nach etwas rumprobieren, habe ich sie entsprechend angepasst:


<ItemTemplate>
    <asp:Button runat="server" ID="btn_userName" Text='<%# Convert.ToString(DataBinder.Eval(Container.DataItem, "UserSurname")) + ", " + Convert.ToString(DataBinder.Eval(Container.DataItem, "UserName")) %>' CssClass="CommonViewConnectionContentSelectionAreaBusSelector" Width="160px" />
</ItemTemplate>

Wieso verwendest du an dieser Stelle überhaupt ein Bind? Da du dem Wert ja nichts zuweisen kannst, wäre hier ein Eval angebracht.

Leider kenne ich mich mit den Eval und Bind Ausdrücken noch nicht so gut aus. Aber als ich Deinen Kommentar gelesen habe, ist mir wieder eingefallen, dass der Bind Ausdruck für eine bi-direktionale Datenbindung steht, richtig?
Wie sähe denn der entsprechende Eval-Ausdruck für mein ItemTemplate aus?

Als Alternative steht dir natürlich immer noch das RowDataBound Event des GV zur Verfügung.

Hier habe ich vorher die Zuweisung gemacht, aber ich habe schon so viele Events in der CodeBehind Klasse registriert, dass ich mir gedacht habe, ein paar Sachen, die ich auch ohne EventHandling machen kann, direkt zuzuweisen. Finde das irgendwie eleganter, da man dann beim entwickeln sofort sieht, was für ein Wert dann in dem entsprechenden Feld steht, ohne erst in die CodeBehind-Klasse zu schauen.
Generell aber mache ich das auch so mit der Zuweisung

63 Beiträge seit 2007
vor 14 Jahren

Genau wie du jetzt schon nutzt: DataBinder.Eval(Container.DataItem, "UserName"))

Hier wird nicht Bind eingesetzt sondern das Eval

P
Phil_B Themenstarter:in
120 Beiträge seit 2008
vor 14 Jahren

Ok, hab vielen Dank!

Werde mich mal ein bischen schlauer machen über diese Ausdrücke.
Funktionieren tut's auf jeden Fall schon wie gewünscht 😃