ASP.NET удалить определенные строки из gridview с помощью флажка - PullRequest
0 голосов
/ 30 июня 2018

мне нужна помощь со следующим code.its работает хорошо .. но когда страница загружается, она показывает все данные из базы данных, и пользователь может выбрать из них, какие строки он хочет удалить .. Я хочу использовать какой-то фильтр. я имею в виду, когда страница загружается, она пуста. я просто введите текст в текстовое поле, а затем нажмите кнопку поиска, и все строки, которые содержат определенный текст из текстового поля, будут отображены. Теперь я выбираю эти строки, которые хочу удалить, и помечаю их флажок для удаления.

в простых словах ... я хочу выбрать из определенных строк, которые содержат текстовое поле и пометить их для удаления ... не из всех строк ...

спасибо всем за любую помощь что мой код

 Imports System
 Imports System.Data
 Imports System.Data.SqlClient
 Imports System.Configuration
 Imports System.Web
 Imports System.Web.Security
 Imports System.Web.UI
 Imports System.Web.UI.WebControls
 Imports System.Web.UI.WebControls.WebParts
 Imports System.Web.UI.HtmlControls
 Imports System.Collections
 Imports System.Text

 Partial Public Class VB
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    If IsPostBack Then
        GetData()
    End If
    BindGrid()
End Sub

Private Sub BindGrid()
    Dim constr As String = ConfigurationManager _
                .ConnectionStrings("conString").ConnectionString()
    Dim query As String = "select * from TestCustomers"
    Dim con As New SqlConnection(constr)
    Dim sda As New SqlDataAdapter(query, con)
    Dim dt As New DataTable()
    sda.Fill(dt)
    gvAll.DataSource = dt
    gvAll.DataBind()
End Sub

Protected Sub OnPaging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
    gvAll.PageIndex = e.NewPageIndex
    gvAll.DataBind()
    SetData()
End Sub

Private Sub GetData()
    Dim arr As ArrayList
    If ViewState("SelectedRecords") IsNot Nothing Then
        arr = DirectCast(ViewState("SelectedRecords"), ArrayList)
    Else
        arr = New ArrayList()
    End If
    Dim chkAll As CheckBox = DirectCast(gvAll.HeaderRow _
                .Cells(0).FindControl("chkAll"), CheckBox)
    For i As Integer = 0 To gvAll.Rows.Count - 1
        If chkAll.Checked Then
            If Not arr.Contains(gvAll.DataKeys(i).Value) Then
                arr.Add(gvAll.DataKeys(i).Value)
            End If
        Else
            Dim chk As CheckBox = DirectCast(gvAll.Rows(i).Cells(0) _
                                        .FindControl("chk"), CheckBox)
            If chk.Checked Then
                If Not arr.Contains(gvAll.DataKeys(i).Value) Then
                    arr.Add(gvAll.DataKeys(i).Value)
                End If
            Else
                If arr.Contains(gvAll.DataKeys(i).Value) Then
                    arr.Remove(gvAll.DataKeys(i).Value)
                End If
            End If
        End If
    Next
    ViewState("SelectedRecords") = arr
End Sub

Private Sub SetData()
    Dim currentCount As Integer = 0
    Dim chkAll As CheckBox = DirectCast(gvAll.HeaderRow _
                    .Cells(0).FindControl("chkAll"), CheckBox)
    chkAll.Checked = True
    Dim arr As ArrayList = DirectCast(ViewState("SelectedRecords") _
                                    , ArrayList)
    For i As Integer = 0 To gvAll.Rows.Count - 1
        Dim chk As CheckBox = DirectCast(gvAll.Rows(i).Cells(0) _
                                        .FindControl("chk"), CheckBox)
        If chk IsNot Nothing Then
            chk.Checked = arr.Contains(gvAll.DataKeys(i).Value)
            If Not chk.Checked Then
                chkAll.Checked = False
            Else
                currentCount += 1
            End If
        End If
    Next
    hfCount.Value = (arr.Count - currentCount).ToString()
End Sub

Protected Sub btnDelete_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim count As Integer = 0
    SetData()
    gvAll.AllowPaging = False
    gvAll.DataBind()
    Dim arr As ArrayList = DirectCast(ViewState("SelectedRecords") _
                                , ArrayList)
    count = arr.Count
    For i As Integer = 0 To gvAll.Rows.Count - 1
        If arr.Contains(gvAll.DataKeys(i).Value) Then
            DeleteRecord(gvAll.DataKeys(i).Value.ToString())
            arr.Remove(gvAll.DataKeys(i).Value)
        End If
    Next
    ViewState("SelectedRecords") = arr
    hfCount.Value = "0"
    gvAll.AllowPaging = True
    BindGrid()
    ShowMessage(count)
End Sub

Private Sub DeleteRecord(ByVal CustomerID As String)
    Dim constr As String = ConfigurationManager _
                    .ConnectionStrings("conString").ConnectionString
    Dim query As String = "delete from TestCustomers where" & _
                            " CustomerID=@CustomerID"
    Dim con As New SqlConnection(constr)
    Dim cmd As New SqlCommand(query, con)
    cmd.Parameters.AddWithValue("@CustomerID", CustomerID)
    con.Open()
    cmd.ExecuteNonQuery()
    con.Close()
End Sub

Private Sub ShowMessage(ByVal count As Integer)
    Dim sb As New StringBuilder()
    sb.Append("<script type = 'text/javascript'>")
    sb.Append("alert('")
    sb.Append(count.ToString())
    sb.Append(" records deleted.');")
    sb.Append("</script>")
    ClientScript.RegisterStartupScript(Me.GetType(), _
                    "script", sb.ToString())
End Sub
End Class

1 Ответ

0 голосов
/ 30 июня 2018

Вы просто должны изменить свой SQL-запрос. Он выбирает все поля без каких-либо условий. Предположим, у вас есть два поля A и B, в которых вы хотите найти текст. Тогда ваш запрос должен измениться на Выберите * в TestCustomers, где A, как "%" + TextBox1.Text + "%", или B, как "%" + TextBox1.Text + "%"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...