2017-02-06 1 views
0

私はDescriptionDivisionです。DropDownList別のドロップダウンリスト項目をクリックするとGridViewを消去する方法?

データを生成すると、GridViewに表示されます。 説明DropDownList内の別の項目を選択すると、そのページはクリアされている必要がありますが、DropDownList内の別の項目を既に選択しても、前のデータのGridViewが表示されるという問題があります。

はここPage_load

保護されたサブをPage_Loadのための私のコードです(オブジェクトとしてByVal送信者、System.EventArgsとしてByVal e)は、User.Identity.NameをMe.Load ユーザーID = IIf関数(SessionHandler.UserID = "" を処理します.ToUpper、SessionHandler.UserID)

 If Not IsPostBack Then 
      Description.Items.Clear() 

      If com.isAdmin(com.RetUser_Id(userid)) Then 
       Description.Items.Add(New ListItem("Number Of Part Numbers/Family Input By User", "1")) 
      End If 

      Description.Items.Add(New ListItem("Product Family with No CAS Number", "2")) 
      Description.Items.Add(New ListItem("Product Family with Inactive Exemption", "3")) 
      Description.Items.Add(New ListItem("Part Number Validation", "4")) 

      InitializeSearchOptions() 
     End If 

     ' this conditional statement will not bind the gridview if the sender object is from dropdownlist 
     ' this will avoid unnecessary binding and reduce execution time 
     Dim ctrlname As String = Page.Request.Params.Get("__EVENTTARGET") 
     If ctrlname <> Nothing And ctrlname <> String.Empty Then 
      If Not ctrlname.ToLower.Contains("dropdownlist") And ViewState.Item("Query") <> Nothing Then 
       BindGridview(ViewState.Item("Query")) 
      End If 
     Else 
      For Each ctrl As String In Page.Request.Form 
       Dim c As Control = Page.FindControl(ctrl) 

       If Not TypeOf (c) Is System.Web.UI.WebControls.Button Then 
        If ViewState.Item("Query") <> Nothing Then 
         BindGridview(ViewState.Item("Query")) 
        End If 

        Exit For 
       End If 
      Next 
      Exit Sub 

     End If 
    End Sub 

はここDescription DropDownListのサブDescription_SelectedIndexChanged(オブジェクトとしてByVal送信者、ByValを電子システムとして保護

のための私のコードです。 EventArgs)を私はGridViewの中でのViewStateをクリアしようとしたが、それはまだ同じだDescription.SelectedIndexChanged InitializeSearchOptions()BindGridView

Private Sub BindGridview(ByVal query As String) 
    ViewState.Add("Query", query) 
    Dim strBB As String = "" 

    Dim count As Integer = 0 

    If hiddenDescription.Value = "4" Then 
     DataSource = New DataTable 
     DataSource.Columns.Add(New DataColumn("PART NUMBER", GetType(String))) 
     DataSource.Columns.Add(New DataColumn("IS EXIST?", GetType(String))) 
     DataSource.Columns.Add(New DataColumn("DIVISION NAME", GetType(String))) 

     Dim str() As String = PartNo.Text.Split(vbNewLine) 

     For Each value As String In str 

      If value.Trim = String.Empty Then 
       Continue For 
      End If 

      strBB = "SELECT DISTINCT a.Part_No AS 'PART NUMBER', a.Part_No AS 'IS EXIST?', c.Div_LE_Name AS 'DIVISION NAME' FROM MPartNumber a INNER JOIN MFamily b ON a.Family_Id = b.Family_Id INNER JOIN MDivision c ON b.Div_Id = c.Div_Id WHERE ('" + Division.Text + "' = '0' OR c.Div_Id = '" + Division.Text + "') AND " + IIf(value.Contains("*"), "a.Part_No LIKE '" + value.Trim().Replace("*", "%") + "'", "a.Part_No = '" + value.Trim() + "'") 
      Dim dt As DataTable = dbHelper.GetRecordDT(strBB) 

      Dim i As Integer 
      For i = 0 To dt.Rows.Count - 1 

       Dim row As DataRow = DataSource.NewRow 
       If dt.Rows.Count > 0 Then 
        row("PART NUMBER") = dt.Rows(i)(0).ToString() 
        row("IS EXIST?") = "YES" 
        row("DIVISION NAME") = dt.Rows(i)(2).ToString() 
       Else 
        row("PART NUMBER") = value.Trim 
        row("IS EXIST?") = "NO" 
        row("DIVISION NAME") = "" 
       End If 

       DataSource.Rows.Add(row) 
      Next 
     Next 
    Else 
     DataSource = dbHelper.GetRecordDT(query) 
    End If 

    count = DataSource.Rows.Count 

    GridView1.DataSource = Nothing 
    GridView1.DataBind() 
    GridView1.PageIndex = 0 

    GridView1.DataSource = DataSource 
    GridView1.Visible = True 
    GridView1.DataBind() 

    ExportToExcel.Visible = IIf(GridView1.Rows.Count < 1, False, True) 
    Panel1.Visible = IIf(GridView1.Rows.Count < 1, False, True) 
    SetTotalResult(count) 
End Sub 

ためInitializeSearchOptions

Private Sub InitializeSearchOptions() 
    Dim dt As New DataTable 

    Division.Items.Clear() 

    Panel2.Visible = False 

    If Description.Text = "1" Then 

     Division.Items.Add(New ListItem("Select Division", "0")) 
     Division.AutoPostBack = True 
     Username.Items.Clear() 

     Username.Items.Add(New ListItem("Select UserName", "0")) 
     CalendarStyle() 
     MultiView1.ActiveViewIndex = 0 

    ElseIf Description.Text = "2" Then 

     Division.Items.Add(New ListItem("Select Division", "0")) 
     Division.AutoPostBack = False 
     MultiView1.ActiveViewIndex = 1 

    ElseIf Description.Text = "3" Then 

     Division.Items.Add(New ListItem("Select Division", "0")) 
     Division.AutoPostBack = False 
     MultiView1.ActiveViewIndex = 2 

    ElseIf Description.Text = "4" Then 
     Division.AutoPostBack = False 
     Division.Items.Add(New ListItem("Select Division", "0")) 
     MultiView1.ActiveViewIndex = 3 
     Panel2.Visible = True 
    End If 

    Division.DataSource = GetDivision() 
    Division.DataBind() 
End Sub 

コードについて End Subの

コードを処理します。 私もautopostbackを試しました。 私はこれをインターネットでさまざまな方法で検索しましたが、この問題を解決できないようです。 これで私を助けてくれることを願っています。おかげさまで

UPDATE

このPage_Loadの中

ViewState.Remove("Query") 

VieState.Clear() 

と私はDropDownListコントロール内の別の項目を選択するが、それはまだ同じだたびにしようとしました。以前に正常にロードされたデータはまだ表示されます。

答えて

1

dropwonlist selectedindexchangeイベントには、次のコードを記述してください。

GridView1.DataSource = Nothing 
GridView1.DataBind() 
+0

それはあなたが空のとき、このメッセージをしたいscroll down toパソコンへ転送した場合レコードが – chorvaeklabu

+0

を発見示しています –

+0

はそんなにあなたに感謝あなたのGridViewコントロールに「EmptyDataText」プロパティを削除:) – chorvaeklabu

関連する問題