2016-07-15 2 views
0

В настоящее время я работаю над проектом. Я вдруг наткнулся на проблему, которая действительно взорвала мои мозги. У меня есть функция, которая отображает содержимое таблицы в базе данных в gridview, которую я назвал bindGrid. Он работает отлично, когда я запрашиваю от 50 до 90 записей. Однако, когда я запрашиваю 100 записей или больше, gridview не отображает записи, пока я не изменю значение моего раскрывающегося окна, которое настроено на автозапуск.Gridview не обновляет отображение обновленной записи

Вот пример кода:

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 

, как вы можете видеть, что выполнение делается после того, как я нажимаю на кнопку фильтра.

Вот моя страница загрузки:

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 

Ну, я знаю причину, почему GridView освежает, когда я нажимаю на моем контроле, который установлен в AutoPostBack это из-за bindGrid, что я вставил в моем Page_Load внутри остальное.

Это действительно кажется пассивной линией кода. Меня действительно беспокоит, почему мой bindGrid внутри кнопки фильтра не выполняется, когда я запрашиваю 100 записей или больше.

Вот мой код 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 

Любая помощь будет оценена.

ответ

0

Попробуйте установить контрольную точку в btnFilter_Click, чтобы узнать, что вызывает проблему. Возможно, это вызвано алгоритмом внутри него или внутри события Page_Load.

Смежные вопросы