2016-07-15 10 views
0

Ich arbeite gerade an einem Projekt. Plötzlich stolperte ich über ein Problem, das mich wirklich umhüllte. Ich habe eine Funktion, die den Inhalt einer Tabelle in einer Datenbank zu einer Gridview anzeigt, die ich BindGrid nannte. Es funktioniert einwandfrei, wenn ich 50 bis 90 Datensätze abfrage. Wenn ich jedoch 100 Datensätze oder mehr abfrage, zeigt die Gridview die Datensätze erst an, wenn ich den Wert meiner Dropdown-Box, die auf Autopostback gesetzt ist, ändere. HierGridview aktualisiert die Anzeige nicht Aktualisierter Datensatz

ist die Probe des Codes:

Protected Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click 
     If cboFilter.Text = "DMZ" Then 
      lblErrFilter.Visible = False 
      lblError.Visible = False 
      If drpYear.Text = "--Select--" Or drpMonth.Text = "--Select--" Or txtDMZ.Text = "--Select--" Or txtTop.Text = "" Then 
       If drpYear.Text = "--Select--" Then 
        lblErrYear.Visible = True 
       Else 
        lblErrYear.Visible = False 
       End If 
       If drpMonth.Text = "--Select--" Then 
        lblErrMonth.Visible = True 
       Else 
        lblErrMonth.Visible = False 
       End If 
       If txtDMZ.Text = "--Select--" Then 
        lblErrDMZ.Visible = True 
       Else 
        lblErrDMZ.Visible = False 
       End If 
       lblError.Visible = True 
       lblError.Text = "No value specified for the following parameter(s) *." 
      Else 
       lblErrYear.Visible = False 
       lblErrMonth.Visible = False 
       lblErrDMZ.Visible = False 
       Call bindData() 
       'If Me.IsPostBack = True Then 
       Call bindGrid() 
       'End If 
       ' 
      End If 
     '__________________________________________________________________________ 
     'Zone filter 
    ElseIf cboFilter.Text = "Zone and Book" Then 
     lblErrFilter.Visible = False 
     lblError.Visible = False 
     If drpYear.Text = "--Select--" Or drpMonth.Text = "--Select--" Or txtZone.Text = "--Select--" Or txtTop.Text = "" Then 
      If drpYear.Text = "--Select--" Then 
       lblErrYear.Visible = True 
      Else 
       lblErrYear.Visible = False 
      End If 
      If drpMonth.Text = "--Select--" Then 
       lblErrMonth.Visible = True 
      Else 
       lblErrMonth.Visible = False 
      End If 
      If txtZone.Text = "--Select--" Then 
       lblErrZone.Visible = True 
      Else 
       lblErrZone.Visible = False 
      End If 
      lblError.Visible = True 
      lblError.Text = "No value specified for the following parameter(s) *." 
     Else 
      lblErrYear.Visible = False 
      lblErrMonth.Visible = False 
      lblErrZone.Visible = False 
      Call bindData() 
      Call bindGrid() 
     End If 
    ElseIf cboFilter.Text = "Account Number" Then 
     If txtFrom.Visible = True And txtTo.Visible = True Then 
      If drpYear.Text = "--Select--" Or drpMonth.Text = "--Select--" Or txtFrom.Text = "" Or txtTo.Text = "" Then 
       If drpYear.Text = "--Select--" Then 
        lblErrYear.Visible = True 
       Else 
        lblErrYear.Visible = False 
       End If 
       If drpMonth.Text = "--Select--" Then 
        lblErrMonth.Visible = True 
       Else 
        lblErrMonth.Visible = False 
       End If 
       If txtFrom.Text = "" Then 
        lblErrR1.Visible = True 
       Else 
        lblErrR1.Visible = False 
       End If 
       If txtTo.Text = "" Then 
        lblErrR2.Visible = True 
       Else 
        lblErrR2.Visible = False 
       End If 
       lblError.Visible = True 
       lblError.Text = "No value specified for the following parameter(s) *." 
      Else 
       Call bindData() 
       Call bindGrid() 
      End If 
     Else 
      If drpYear.Text = "--Select--" Or drpMonth.Text = "--Select--" Or lstAcct.Items.Count = 0 Then 
       If drpYear.Text = "--Select--" Then 
        lblErrYear.Visible = True 
       Else 
        lblErrYear.Visible = False 
       End If 
       If drpMonth.Text = "--Select--" Then 
        lblErrMonth.Visible = True 
       Else 
        lblErrMonth.Visible = False 
       End If 
       If lstAcct.Items.Count = 0 Then 
        lblErrAcct.Visible = True 
       Else 
        lblErrAcct.Visible = False 
       End If 

       lblError.Visible = True 
       lblError.Text = "No value specified for the following parameter(s) *." 
      Else 
       lblErrYear.Visible = False 
       lblErrMonth.Visible = False 
       lblErrR1.Visible = False 
       lblErrR2.Visible = False 
       Call bindData() 
       Call bindGrid() 
      End If 
     End If 
    Else 
     If cboFilter.Text = "--Select--" Then 
      lblErrFilter.Visible = True 
     End If 
     lblError.Visible = True 
     lblError.Text = "No value specified for the following parameter(s) *." 
    End If 
    'Response.Redirect("~/Sites/CD/TopCon.aspx", True) 
End Sub 

, wie Sie die Ausführung erfolgt sehen kann, nachdem ich auf dem Filter-Button klicken.

Hier ist meine Seite zu laden:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 


    If User.Identity.IsAuthenticated = False Then 
     Response.Redirect("/Default.aspx", True) 
    Else 
     If User.IsInRole("chicken") = True Or User.IsInRole("dog") = True Or User.IsInRole("cat") = True Then 
      If Not IsPostBack Then 
       maxTop = 10 
       txtTop.Text = maxTop 
       Call bindData() 
       Call bindGrid() 
       lblUser.Text = lblUser.Text & User.Identity.Name 
       lblIP.Text = lblIP.Text & GetIPAddress() 
       cboFilter.TabIndex = 0 
       Call fillYear() 
       Call fillDMZCombo() 
       Call fillZoneCombo() 
       Call fillType() 
      Else 
       *Call bindGrid()* 
      End If 
     Else 
      Response.Redirect("/Default.aspx", True) 
     End If 
    End If 

End Sub 

Nun ich den Grund, warum die gridview Auffrischungen, wenn ich auf meiner Kontrolle klicken, die wegen des bindGrid es auf Autopostback festgelegt ist, dass ich auf meiner page_load innerhalb der eingefügt sonst.

Es scheint wirklich eine passive Codezeile zu sein. Was mich wirklich stört ist, warum mein bindGrid innerhalb der Filterschaltfläche nicht ausgeführt wird, wenn ich 100 Datensätze oder mehr abfrage.

Hier ist mein Code für bindGrid:

Public Sub bindGrid() 
    IpAdd = GetIPAddress() 
    xUser = User.Identity.Name 

    ShowCon = New SqlConnection("some data connection") 
    ShowCon.Open() 

    cmdShowCon = ShowCon.CreateCommand 
    cmdShowCon.CommandTimeout = 600 
    cmdShowCon.CommandText = "some simple select statement" 
    daShowCon.SelectCommand = cmdShowCon 
    dsShowCon.Clear() 
    daShowCon.Fill(dsShowCon, "someTable") 

    grdTopCon.DataSource = dsShowCon 
    grdTopCon.DataBind() 

End Sub 

Jede Hilfe sehr geschätzt werden würde.

Antwort

0

Versuchen Sie einen Haltepunkt in btnFilter_Click zu setzen, um zu sehen, was das Problem verursacht. Dies kann entweder durch den darin enthaltenen Algorithmus oder durch das Ereignis Page_Load verursacht werden.

Verwandte Themen