Laden...
R
rizi
myCSharp.de - Member
76
Themen
402
Beiträge
Letzte Aktivität
vor 14 Jahren
Dabei seit
08.12.2005
Alter
39
Erstellt vor 14 Jahren

DANKE SCHÖN!!!

Lg
rizi

Erstellt vor 14 Jahren

@herbie

Danke für die schnelle Antwort, wie würde man es machen, wenn die Eingangsparameter nicht modifiziert werden dürften??

danke
rizi

Erstellt vor 14 Jahren

Hi, ich stand schon öfters vor folgendem Problem:


public class Data{
   public double Latitude{get;set;}
   public double Longitude{get;set;}
   public string Text{get;set;}
}


pubilc class BusinessLogic{
   public IEnumerable<Data> GetDataFromDAL(int id){
      IEnumerable<Data> data = dal.GetData(id);
      ModifiyData(data);
    }

    public void ModifyData(IEnumerable<Data> data){
       //zb.
       foreach(var currData in data){
          currData.Longitude += 0.001;
       }
     }
}

So wie ich es im obigen Code dargestellt habe sollte es ja nicht sein, richtig??
Eingangsparameter sollten soweit ich weiß nicht verändert werden, wie wäre die richtige Herangehensweise für so etwas?

Folgende Idee:
Die Mehtode ModifyData gibt ebenfalls IEnumerable<Data> zurück, erzeugt also innerhalb der Methode eine neue List, die Frage die sich mir nun stellt: ich müsste eigentlich auch neue Data Objekte erstellen(Stichwort IClonable), die Werte von currData übernehmen u. zb. 0.0001 dazu addieren. (neue Objekte deshalb erstellen, denn es handelt sich ja um Instanzen innerhalb der Liste, daher würde es meiner Meinung nach nicht ausreichen eine neue Liste zu erstellen u. die modifizierten Daten-Objekte zu adden.

Wie seht ihr das, gibt es eine Pattern das dieses Problem löst??

Danke & Lg
rizi

Erstellt vor 14 Jahren

Danke für die Info & danke fürs Umbenennen des Themas.

Lg
rizi

Erstellt vor 14 Jahren

@winSharp93
minValue und maxValue sind ebenfalls int-werte:
zb:

ValidateFieldIsInRange(5, 1, 9);

ohne Nullable funktioniert es, allerdings wird Nullable hier benötigt, ist allerdings anhand des obrigen Beispiels nicht zu erkennen!

Meine Frage ist eben warum dieses Nullable diesen Einfluss hat.

bzw. wenn man null für value verwendet kann man sich das <int> ebenfalls sparen:
Bsp.:

ValidateFieldIsInRange(null, 1, 9);

Bin für weitere Tipps dankbar.

lg
rizi

Erstellt vor 14 Jahren
public void ValidateFieldIsInRange<T>(T? value, T minValue, T maxValue) where T : struct, IComparable<T>
{

          if(minValue.CompareTo(value.Value)>0 || maxValue.CompareTo(value.Value)<0)
                  //do something

}

Folgender Aufruf der Methode funktioniert nicht:

ValidateFieldIsInRange(5, minValue, maxValue);

Folgender Aufruf der Methode funktioniert:

ValidateFieldIsInRange<int>(5, minValue, maxValue);

Was ich nicht verstehe ist,warum explizit <int> angeben werden muss!

Kann mir jemand auf die Sprünge helfen?

Danke schön
rizi

Erstellt vor 14 Jahren

@schaedld

Wow, vielen Dank für die Mühe, dann werde ich mir mal dieses Rating Control ansehen.

danke schön
rizi

Erstellt vor 14 Jahren

Nein, das Ergebnis kommt bereits aus der DB, ich will es nur noch darstellen, allerdings kann ich mit DataBinder.Eval() nichts in eine Variable speichern, die sich im CodeBehind File befindet, diese brauche ich aber damit ich mit
if(i≤ RatingResult)....

festlegen kann wieviele Sterne angezeigt werden.

Auf dieses Verhalten kann ich keinen Einfluss nehmen,da das jQuery Plugin es so vorsieht.

lg
rizi

Erstellt vor 14 Jahren

hi schaedld

es geht um diesen code:

 <input name="<%=uniqueName %>" type="radio" class="star" value="<%=i%>" disabled="disabled"
                     <% if(i <= RatingResult){ %>
                        checked="checked" <%} %> />
            <%} %>

dabei handelt es sich um ein jQuery Rating Plugin (natürlich müssen noch ein paar javascript+bilder eingebunden werden)
Und mit der Variable RatingResult wird angegeben wieviele Sterne beim RatingControl angezeigt werden.

Lg
rizi

Erstellt vor 14 Jahren

Hi, schön langsam verzweifle ich, ich nutze die ASP.NET DataList, dies sieht folgendermaßen aus:

<asp:DataList ID="dlBlogEntries" runat="server" >    
    <ItemTemplate>
        <fieldset class="fieldsetCreateWidth">
         
            
            <%for (int i = 1; i <= 5; i++){ %>
             <%# RatingResult = (int)DataBinder.Eval(Container.DataItem, "RatingResult")  %> 
             <input name="<%=uniqueName %>" type="radio" class="star" value="<%=i%>" disabled="disabled"
                     <% if(i <= RatingResult){ %>
                        checked="checked" <%} %> />
            <%} %>
        </fieldset>
    </ItemTemplate>

Was ich machen möchte ist, das Ergebnis des Ausdrucks in eine Variable speichern die sich im CodeBehind befindet, ich versuche dass bis jetzt so:

<%# RatingResult = (int)DataBinder.Eval(Container.DataItem, "RatingResult") %>

Allerdings wird das Ergebnis immer in den HTML Code geschrieben anstatt in die Variable gespeichert.

Kann mir jemand sagen wie ich das bewerkstelligen kann, möglicherweise ist ja DataBinder.Eval() einfach der falsche Ansatz.

Danke vielmals

Lg
rizi

10 von 402 Beiträgen