hi liste -

ich habe ein datagrid, dass mir daten aus einer zimmer-db liest.
funzt soweit auch. habe auch die editier-funktion implementiert. und hier
hakt es ein wenig.

erstes problem:

die felder in der db sind alle char (größe 200 bzw. 10).
wenn ich die werte der felder in eine textbox schreibe und die werte dann
darin editieren will, dann spinnt der cursor rum. es ist so, als würde der
wert aus der datenbank zusammen mit 150 blanks oder so im textfeld stehen.
ich muss dann erst alle "leerzeichen" makieren und löschen, um direkt hinter
den text zu schreiben.

zweites problem:

die update funktion. sie ruft einfach eine stored procedure auf, die das
ganze updaten soll. allerdings schreibt er mir immer nur den ersten
charakter in die datenbank, statt den ganzen text. hier mal der code (habe
varchar auch schon durch char ersetzt, hat aber nicht geholfen):

*** stored procedure ***
CREATE PROCEDURE updateZimmer
    @ID int, @name_de varchar, @name_de_kurz varchar, @name_en varchar,
@name_en_kurz varchar,
    @Preis money
AS
    UPDATE Zimmer
    SET [EMAIL PROTECTED], [EMAIL PROTECTED],
    [EMAIL PROTECTED], [EMAIL PROTECTED],
    [EMAIL PROTECTED]
    WHERE [EMAIL PROTECTED]
GO


*** update funktionen ***
'Führt die Änderungen des Editors im Datagrid durch
Sub DoItemUpdate(objSource As Object, objArgs As DataGridCommandEventArgs)
        Dim ID, Name_de, Name_de_kurz, Name_en, Name_en_kurz, Preis As
String

        ID = CStr(Zimmer.DataKeys(objArgs.Item.ItemIndex))
        Name_de = CType(objArgs.Item.FindControl("name_de"), TextBox).Text
        Name_de_kurz = CType(objArgs.Item.FindControl("name_de_kurz"),
TextBox).Text
        Name_en = CType(objArgs.Item.FindControl("name_en"), TextBox).Text
        Name_en_kurz = CType(objArgs.Item.FindControl("name_en_kurz"),
TextBox).Text
        Preis = CType(objArgs.Item.FindControl("preis"), TextBox).Text

        'Eingabe wird überprüft und im Falle einer falschen Eingabe werden
die
        'Werte einfach auf 0 gesetzt
        Dim testFloat,testInt As System.Text.RegularExpressions.Regex
        Dim strPatternFloat, strPatternInt As String

        strPatternFloat = "^\d+,\d{2}\z"
        strPatternInt = "^\d+\z"

        testFloat = new
System.Text.RegularExpressions.Regex(strPatternFloat,System.Text.RegularExpr
essions.RegexOptions.ExplicitCapture)
        testInt = new
System.Text.RegularExpressions.Regex(strPatternInt,System.Text.RegularExpres
sions.RegexOptions.ExplicitCapture)

        If(NOT (testFloat.IsMatch(Preis) OR testInt.IsMatch(Preis))) Then
            Preis = "0"
        End If

        If(Name_de = "")Then
            Name_de = "-"
        End If

        If(Name_de_kurz = "")Then
            Name_de_kurz = "-"
        End If

        If(Name_en = "")Then
            Name_en = "-"
        End If

        If(Name_en_kurz = "")Then
            Name_en_kurz = "-"
        End If

        Test.Text = ID & " " & Name_de & " " & Name_de_kurz & " " & Name_en
& " " & Name_en_kurz & " " & Preis

        'Aufrufen der Update Methode
        updateZimmer(ID,Name_de,Name_de_kurz,Name_en,Name_en_kurz,Preis)

        'Editor-Modus zurück setzen
        Zimmer.EditItemIndex = -1

        System.Threading.Thread.Sleep (500)
        Datenlesen()
End Sub




'Update Funktion
Sub updateZimmer(ID As String, Name_de As String, Name_de_kurz As String,
Name_en As String, Name_en_kurz As String, Preis As String)
        Dim strSqlConnect As String
        Dim strProcedure As String
        Dim MyParam As SqlParameter

        strSqlConnect = ConnectStrings.SqlConnectionString
        strProcedure = "updateZimmer"

        Dim objConnect As New SqlConnection(strSqlConnect)

        Dim objCommand As New SqlCommand(strProcedure,objConnect)

        objCommand.CommandType = CommandType.StoredProcedure

        MyParam = objCommand.Parameters.Add("@ID", SqlDbType.int)
        MyParam.Value = ID

        MyParam = objCommand.Parameters.Add("@Name_de", SqlDbType.VarChar)
        MyParam.Value = Name_de

        MyParam = objCommand.Parameters.Add("@Name_de_kurz",
SqlDbType.VarChar)
        MyParam.Value = Name_de_kurz

        MyParam = objCommand.Parameters.Add("@Name_en", SqlDbType.VarChar)
        MyParam.Value = Name_en

        MyParam = objCommand.Parameters.Add("@Name_en_kurz",
SqlDbType.VarChar)
        MyParam.Value = Name_en_kurz

        MyParam = objCommand.Parameters.Add("@Preis", SqlDbType.money)
        MyParam.Value = Preis

        objConnect.Open()
        objCommand.ExecuteNonQuery()
        objConnect.Close()
End Sub

_______________________________________________
Asp.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an