2012-02-20 6 views
2

接続されたSQLデータベースを使用してvb.netで動的グリッドビューを作成しています。私は更新コマンドをクリックすると、イベントは私が何をしても起動しません。グリッドビューが編集モードになり、キャンセルボタンが正常に機能します。これは2日間のグーグル・グーグルの費用がかかりますが、解決策はありません。コードが実行されたかどうかを確認するためにブレークポイントを使用しましたが、そうではありませんでした。もし誰かがこの経験を持っていれば、すべての助けに感謝します!私は問題がaddhandlerにあると信じていますが、それは何の誤りも与えません。ありがとうございます。 sqlコマンドがテストであったことを忘れて、そのフィールドのデータを15に設定しました。現在は10です。通常のボタンまたは静的なグリッドビューを使用すると機能します。更新イベントが動的グリッドビューで発生しない

Public Class WebForm1 
    Inherits System.Web.UI.Page 
    Dim rowscount As Integer = 2 
    Dim colcount As Integer = 18 
    Dim aantalitems As Integer = 0 
    Dim sqlstring() As String 
    Dim hj As String 
    Dim k As Integer = 0 
    Dim l As Integer = 0 
    Dim m1 As Integer = 0 
    Dim m2 As Integer = 0 
    Dim m3 As Integer = 0 
    Dim cellheight As Integer = 20 



    Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     'Creat the Table and Add it to the Page 
     GetItems() 
    Dim table As New Table() 
    table.ID = "Table" 
    Page.Form.Controls.Add(table) 
    table.HorizontalAlign = HorizontalAlign.Center 

    ' Now iterate through the table and add your controls 
    For i As Integer = 0 To (aantalitems) * 2 

     Dim row As New TableRow() 
     For j As Integer = 0 To rowscount - 1 
      Dim tb As New GridView 
      Dim cell As New TableCell() 
      Dim cnnstring As New SqlClient.SqlConnection 
      Dim sdrString As SqlClient.SqlDataReader 
      Dim scmdString As New SqlClient.SqlCommand 

      If i Mod 2 = 0 And j = 0 Then 

       Dim label As New Label 
       label.ID = j & i 
       cell.Height = cellheight 
       ReDim Preserve sqlstring(aantalitems) 
       label.Text = sqlstring(k) 
       cell.Controls.Add(label) 
       row.Cells.Add(cell) 
      ElseIf i Mod 2 = 0 Then 
       Dim label As New Label 
       label.ID = j & i 
       cell.Height = cellheight 
       label.Visible = False 
       cell.Controls.Add(label) 
       row.Cells.Add(cell) 
      Else 
       If j = 1 Then 

        cnnstring.ConnectionString = My.Settings.link 
        scmdString.Connection = cnnstring 
        cnnstring.Open() 
        ReDim Preserve sqlstring(aantalitems) 

        scmdString.CommandText = "SELECT Maat, min_voorraad, Huidige_voorraad, Actief, Frequentie FROM tblStock WHERE Item = '" & sqlstring(k) & "'" 
        k += 1 

        sdrString = scmdString.ExecuteReader 
        ' Set a unique ID for each TextBox added 
        tb.ID = "GV" & i & "_" & j 

        tb.DataSource = sdrString 
        tb.AutoGenerateEditButton = True 
        tb.EnableSortingAndPagingCallbacks = True 


        AddHandler tb.RowEditing, AddressOf TaskGridView_RowEditing 
        AddHandler tb.RowCancelingEdit, AddressOf TaskGridView_RowCancelingEdit 
        AddHandler tb.PageIndexChanging, AddressOf TaskGridView_PageIndexChanging 
        AddHandler tb.RowUpdating, AddressOf TaskGridView_rowupdating 

        tb.DataBind() 

        ' Add the control to the TableCell 
        cell.Controls.Add(tb) 
        ' Add the TableCell to the TableRow 
        row.Cells.Add(cell) 
        ' vanaf hier invoeren wat er in de textboxen moet komen 

        cnnstring.Close() 
        sdrString.Close() 

        cnnstring.Dispose() 
        sdrString.Dispose() 
        scmdString.Dispose() 
       Else 

        Dim afbeelding As New Image 
        afbeelding.ID = "Afbeelding" & i.ToString 
        cell.Controls.Add(afbeelding) 
        row.Cells.Add(cell) 
        afbeelding.ImageAlign = ImageAlign.Bottom 
        ReDim Preserve sqlstring(aantalitems) 



        afbeelding.ImageUrl = My.Settings.Iurl & sqlstring(l) & ".jpg" 
        l += 1 
       End If 
      End If 
     Next 

     ' Add the TableRow to the Table 
     table.Rows.Add(row) 

    Next 

End Sub 

Sub CustomersGridView_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs) 
    Dim customersGridView As GridView = CType(sender, GridView) 
    Dim frequntie As String = customersGridView.Rows(e.NewEditIndex).Cells(5).Text 
    If frequntie = "1x jaar" Then 
     e.Cancel = True 
     MsgBox("You cannot edit this record.") 

    Else 

     MsgBox("") 

    End If 

End Sub 

Protected Sub TaskGridView_rowupdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs) 
    Dim Taskgridview As GridView = CType(sender, GridView) 
    Dim cnnstring5 As New SqlClient.SqlConnection 
    Dim scmdstring5 As New SqlClient.SqlCommand 

    MsgBox("zou het werken?") 


    cnnstring5.ConnectionString = My.Settings.link 
    scmdstring5.Connection = cnnstring5 
    cnnstring5.Open() 
    scmdstring5.CommandText = "UPDATE tblStock SET min_voorraad = 15" 
    scmdstring5.ExecuteNonQuery() 

    cnnstring5.Close() 
    cnnstring5.Dispose() 
    scmdstring5.Dispose() 




End Sub 

Protected Sub TaskGridView_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) 
    Dim Taskgridview As GridView = CType(sender, GridView) 
    Taskgridview.PageIndex = e.NewPageIndex 
    'Bind data to the GridView control. 
    MsgBox("Dit werkt") 

    Taskgridview.DataBind() 


End Sub 

Protected Sub TaskGridView_RowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs) 
    Dim Taskgridview As GridView = CType(sender, GridView) 

    'Set the edit index. 
    Taskgridview.EditIndex = e.NewEditIndex 

    'Bind data to the GridView control. 
    Dim cnnstring3 As New SqlClient.SqlConnection 
    Dim sdrString3 As SqlClient.SqlDataReader 
    Dim scmdstring3 As New SqlClient.SqlCommand 
    Dim uniekeID, subUniekeID As String 
    Dim ez As Integer = 0 

    uniekeID = Taskgridview.UniqueID.ToString 
    subUniekeID = uniekeID.Substring(2, +2) 
    If IsNumeric(subUniekeID) Then 
     ez = CInt(subUniekeID) 
     ez -= 1 
     ez /= 2 
    ElseIf IsNumeric(subUniekeID.Substring(0, +1)) Then 
     ez = CInt(subUniekeID.Substring(0, +1)) 
     ez -= 1 
     ez /= 2 
    Else 
     MsgBox("Hier is iets fout!" & vbNewLine & "Deze code werkt nog niet met over de honderd items!") 

    End If 


    cnnstring3.ConnectionString = My.Settings.link 
    scmdstring3.Connection = cnnstring3 
    cnnstring3.Open() 
    ReDim Preserve sqlstring(aantalitems) 
    scmdstring3.CommandText = "SELECT Maat, min_voorraad, Huidige_voorraad, Actief, Frequentie FROM tblStock WHERE Item = '" & sqlstring(ez) & "'" 
    sdrString3 = scmdstring3.ExecuteReader 
    Taskgridview.DataSource = sdrString3 
    Taskgridview.DataBind() 

    sdrString3.Close() 
    cnnstring3.Close() 
    sdrString3.Dispose() 
    cnnstring3.Dispose() 
    scmdstring3.Dispose() 



End Sub 

Protected Sub TaskGridView_RowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs) 
    Dim Taskgridview As GridView = CType(sender, GridView) 

    Taskgridview.EditIndex = -1 
    Dim cnnstring4 As New SqlClient.SqlConnection 
    Dim sdrString4 As SqlClient.SqlDataReader 
    Dim scmdstring4 As New SqlClient.SqlCommand 
    Dim uniekeID, subUniekeID As String 
    Dim ez As Integer = 0 

    uniekeID = Taskgridview.UniqueID.ToString 
    subUniekeID = uniekeID.Substring(2, +2) 
    If IsNumeric(subUniekeID) Then 
     ez = CInt(subUniekeID) 
     ez -= 1 
     ez /= 2 
    ElseIf IsNumeric(subUniekeID.Substring(0, +1)) Then 
     ez = CInt(subUniekeID.Substring(0, +1)) 
     ez -= 1 
     ez /= 2 
    Else 
     MsgBox("Hier is iets fout!" & vbNewLine & "Deze code werkt nog niet met over de honderd items!") 

    End If 
    cnnstring4.ConnectionString = My.Settings.link 
    scmdstring4.Connection = cnnstring4 
    cnnstring4.Open() 
    ReDim Preserve sqlstring(aantalitems) 

    scmdstring4.CommandText = "SELECT Maat, min_voorraad, Huidige_voorraad, Actief, Frequentie FROM tblStock WHERE Item = '" & sqlstring(ez) & "'" 
    sdrString4 = scmdstring4.ExecuteReader 
    Taskgridview.DataSource = sdrString4 
    Taskgridview.DataBind() 
    sdrString4.Close() 
    cnnstring4.Close() 
    sdrString4.Dispose() 
    cnnstring4.Dispose() 
    scmdstring4.Dispose() 



End Sub 

Private Sub GetItems() 
    Dim cnnvoorraad As New SqlClient.SqlConnection 
    Dim scmdVoorraad As New SqlClient.SqlCommand 
    Dim sdrVoorraad As SqlClient.SqlDataReader 
    Dim cnnstring As String = My.Settings.link 
    cnnvoorraad.ConnectionString = cnnstring 
    cnnvoorraad.Open() 
    scmdVoorraad.Connection = cnnvoorraad 
    scmdVoorraad.CommandText = "SELECT DISTINCT Item FROM tblStock" 
    sdrVoorraad = scmdVoorraad.ExecuteReader 

    Do While sdrVoorraad.Read 
     Dim strLijn As String 

     strLijn = sdrVoorraad.Item("Item").ToString 
     ReDim Preserve sqlstring(aantalitems) 
     sqlstring(aantalitems) = strLijn 
      aantalitems += 1 

     Loop 
     cnnvoorraad.Close() 
    End Sub 
End Class 

答えて

0

代わりのサブTaskGridView_RowEditing(オブジェクトとしてByVal送信者、保護

サブTaskGridView_RowEditing(オブジェクトとしてByVal送信者、ByValの電子GridViewUpdateEventArgs As)を試しますByVal e As GridViewEditEventArgs)

のAddHandlerは時々、保護された潜水艦で返信用

+0

おかげで問題を抱えているが、それはまだ「キャンセル」や「編集」作業は完全に、私はきた一方で、まだ何もしない「更新」、動作していませんそれらをすべて通常のサブシステムに変更しようとしましたが、何もありませんでした – user1194585

関連する問題