sinni800
Mitglied
Also... Da gibts so ein Online Game, dort gibt es vier Währungen...
Gold, Silber, Kupfer, Zinn
100 Zinn sind 1 Kupfer, und so weiter!
Ich soll eine Art Kassenbuch entwickeln, so weit so gut, er trägt es in die Datenbank richtig ein!
Er wandelt alles in die kleinste Währung um, und schiebt die in die Datenbank.
Jetzt muss das natürlich auch in einzelne Währungen angezeigt werden! Und da liegt mein Problem, wie mach ich das?
Bei 1 000 000 Zinn sinds ja
1 Gold, 00 Silber, 00 Kupfer, 00 Zinn...
Habs so versucht:
Funktioniert aber nur bis Silber, wenn überhaupt..
Krieg ich das irgendwie besser hin? Den Integer könnte ich doch auch in der Theorie parsen, nur wie? Und wie geh ich da mit allen Möglichkeiten um?
Gold, Silber, Kupfer, Zinn
100 Zinn sind 1 Kupfer, und so weiter!
Ich soll eine Art Kassenbuch entwickeln, so weit so gut, er trägt es in die Datenbank richtig ein!
Code:
Protected Sub FormView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertEventArgs) Handles FormView1.ItemInserting
'Response.Write(CType(FormView1.FindControl("G"), TextBox).Text)
'e.Values(3)
CType(FormView1.FindControl("MengeTextBox"), TextBox).Text = (Convert.ToUInt32((getUI("G") * 1000000) + (getUI("S") * 10000) + (getUI("K") * 100) + (getUI("Z")))).ToString
e.Values(2) = (Convert.ToUInt32((getUI("G") * 1000000) + (getUI("S") * 10000) + (getUI("K") * 100) + (getUI("Z")))).ToString
Dim Einnahme As Boolean = CType(FormView1.FindControl("chk_Einnahme"), CheckBox).Checked
If Einnahme = False Then
Dim x As Integer = Convert.ToInt32(CType(FormView1.FindControl("MengeTextBox"), TextBox).Text)
x = x * (-1)
CType(FormView1.FindControl("MengeTextBox"), TextBox).Text = x.ToString
e.Values(2) = x.ToString
End If
End Sub
Function getUI(ByVal s As String) As Integer
Try
Return Convert.ToInt32(CType(FormView1.FindControl(s), TextBox).Text)
Catch ex As Exception
Response.Write(ex.Message)
Response.Write("<br /> TEXT: " + CType(FormView1.FindControl(s), TextBox).Text)
End Try
End Function
Er wandelt alles in die kleinste Währung um, und schiebt die in die Datenbank.
Jetzt muss das natürlich auch in einzelne Währungen angezeigt werden! Und da liegt mein Problem, wie mach ich das?
Bei 1 000 000 Zinn sinds ja
1 Gold, 00 Silber, 00 Kupfer, 00 Zinn...
Habs so versucht:
Code:
Protected Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.DataBound
Dim d As GridViewRowCollection
d = GridView1.Rows
Dim f As GridViewRow
For Each f In d
Dim wert As Int64 = f.Cells(4).Text
f.Cells(4).Text = ""
append(f.Cells(4), "<img src=w/gold.png /> " + Convert.ToInt32(wert / 1000000).ToString)
append(f.Cells(4), "<img src=w/silber.png /> " + Convert.ToInt32(wert / 10000 - Convert.ToInt32(wert / 1000000) * 100).ToString)
append(f.Cells(4), "<img src=w/kupfer.png /> " + Convert.ToInt32(wert / 100 - Convert.ToInt32(wert / 1000000) * 100 - Convert.ToInt32(wert / 10000) * 100).ToString)
append(f.Cells(4), "<img src=w/zinn.png /> " + Convert.ToInt32(wert - Convert.ToInt32(wert / 1000000) * 100 - Convert.ToInt32(wert / 10000) * 100 - Convert.ToInt32(wert / 100) * 100).ToString())
Next
End Sub
Sub append(ByRef cell As TableCell, ByVal content As String)
cell.Text = cell.Text + content
End Sub
Funktioniert aber nur bis Silber, wenn überhaupt..
Krieg ich das irgendwie besser hin? Den Integer könnte ich doch auch in der Theorie parsen, nur wie? Und wie geh ich da mit allen Möglichkeiten um?