【问题标题】:webgrid mvc3 searchingwebgrid mvc3 搜索
【发布时间】:2011-06-20 18:23:02
【问题描述】:

我在系统上使用 MVC3 和 webgrid。我想知道是否可以实现搜索引擎。

我的控制器有

Return View(service.list)

并返回大约 50000 条记录,因此最好在结果中搜索一些内容。

问候。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    我找到了解决办法....

    视图(使用 Razor):

    @Using Html.BeginForm("ListarAsegurados", "PolizasLayout", New AjaxOptions With {.UpdateTargetId = "divGrid"})
        Dim varCondicionesDeBusqueda As IDictionary(Of String, String) = New Dictionary(Of String, String)
    
        If Not IsNothing(TempData("CondicionesDeBusqueda")) Then
            varCondicionesDeBusqueda = TryCast(TempData("CondicionesDeBusqueda"), Dictionary(Of String, String))
        End If
        TempData("CondicionesDeBusqueda") = varCondicionesDeBusqueda
        Dim varDocumentoAsegurado As String = If(varCondicionesDeBusqueda.Keys.Contains("DOCUMENTO_ASEGURADO"), varCondicionesDeBusqueda("DOCUMENTO_ASEGURADO"), String.Empty)
        Dim varNombresAsegurado As String = If(varCondicionesDeBusqueda.Keys.Contains("Asegurado"), varCondicionesDeBusqueda("Asegurado"), String.Empty)
    
        @<fieldset>
            <legend>Filtros de Búsqueda</legend>
            <table>
                <tr>
                    <td>
                        @Html.RadioButton("Grupo", "", True, New With {.class = "letraingreso", .style = "width:30px", .id = "RadioButton1", .onclick = "CambiarEstadoControles(this)"})
                    </td>
                    <td style="border-width:0px; width:120px">
                        @Html.Label("ID_TIPO_DOCUMENTO", "Tipo Documento:")
                    </td>
                    <td style="border-width:0px">
                        @Html.DropDownList("ID_TIPO_DOCUMENTO", Nothing, New With {.class = "letraingreso", .style = "width:250px"})
                    </td>
                    <td style="width:50px"></td>
                    <td style="border-width:0px">
                        @Html.Label("DOCUMENTO_ASEGURADO", "No. Documento:")
                        @Html.TextBox("DOCUMENTO_ASEGURADO", varDocumentoAsegurado, New With {.class = "letraingreso", .style = "width:200px", .onkeyup = "if(this.value.match(/\D/))this.value=this.value.replace(/\D/g,'')"})
                    </td>
                </tr>
                <tr>
                    <td>
                        @Html.RadioButton("Grupo", "", False, New With {.class = "letraingreso", .style = "width:30px", .id = "RadioButton2", .onclick = "CambiarEstadoControles(this)"})
                    </td>
                    <td style="border-width:0px; width:120px">
                        @Html.Label("Asegurado", "Apellidos / Nombres:")
                    </td>
                    <td style="border-width:0px">
                        @Html.TextBox("Asegurado", varNombresAsegurado, New With {.class = "letraingreso", .style = "width:400px; text-transform:uppercase", .disabled = "disabled"})
                    </td>
                </tr>
            </table>
    
            <br />
            <table>
                <tr>
                    <td style="border-width:0px; width:145px">
                        <input type ="submit" value="Buscar" style="width:90px" />
                    </td>
                </tr>
            </table>
        </fieldset>
    
    
        @<br />
        @<p>
            @Html.ActionLink(" ", "Create", "Asegurado", New With {.area = "Polizas"}, New With {.class = "imgNuevo"})
        </p>
    
    
        @<div id="divGrid">
            @grid.GetHtml(
                        tableStyle:="webgrid",
                        headerStyle:="webgrid-header",
                        footerStyle:="webgrid-footer",
                        alternatingRowStyle:="webgrid-alternating-row",
                        selectedRowStyle:="webgrid-selected-row",
                        rowStyle:="webgrid-row-style",
                        mode:=WebGridPagerModes.All,
                        firstText:="<< Inicio",
                        previousText:="< Anterior",
                        nextText:="Siguiente >",
                        lastText:="Fin >>",
                        columns:=grid.Columns(
                        grid.Column(format:=Function(Model) Html.ActionLink(" ", "Edit", "Asegurado", New With {.area = "Polizas", .parID = Model.ID_ASEGURADO}, New With {.class = "imgEditar", .title = "Modificar"}), style:="webgrid-width-images"),
                        grid.Column(format:=Function(Model) Html.ActionLink(" ", "Delete", "Asegurado", New With {.area = "Polizas", .parID = Model.ID_ASEGURADO}, New With {.class = "imgEliminar", .title = "Eliminar"}), style:="webgrid-width-images"),
                        grid.Column("DOCUMENTO_ASEGURADO", "No. Documento"),
                        grid.Column("PRIMER_APELLIDO_ASEGURADO", "Asegurado", format:=Function(Model) Model.PRIMER_APELLIDO_ASEGURADO & " " & Model.SEGUNDO_APELLIDO_ASEGURADO & " " & Model.NOMBRES_ASEGURADO),
                        grid.Column("DIRECCION_DOMICILIO_ASEGURADO", "Dirección"),
                        grid.Column("EMAIL_ASEGURADO", "eMail")
                        )
                        )
        </div>
    End Using
    

    控制器

    Function ListarAsegurados() As ActionResult
            Dim varListado As SelectList
            Dim varCondicionesDeBusqueda As IDictionary(Of String, String) = New Dictionary(Of String, String)
    
            If Request.Form.AllKeys.Length > 0 Then
                varCondicionesDeBusqueda.Add("DOCUMENTO_ASEGURADO", Request("DOCUMENTO_ASEGURADO"))
                varCondicionesDeBusqueda.Add("Asegurado", Request("Asegurado"))
            Else
                Dim values As Object = Nothing
                If TempData.TryGetValue("CondicionesDeBusqueda", values) Then
                    varCondicionesDeBusqueda = TryCast(values, Dictionary(Of String, String))
                End If
            End If
    
            TempData("CondicionesDeBusqueda") = varCondicionesDeBusqueda
            Dim varDocumentoAsegurado As String = GetSearchConditionValue(varCondicionesDeBusqueda, "DOCUMENTO_ASEGURADO")
            Dim varNombresAsegurado As String = GetSearchConditionValue(varCondicionesDeBusqueda, "Asegurado")
    
            If String.IsNullOrEmpty(varDocumentoAsegurado) And String.IsNullOrEmpty(varNombresAsegurado) Then
                varListado = New SelectList(varServicio.ListarTiposDocumentos, "ID_TIPO_DOCUMENTO", "DESC_TIPO_DOCUMENTO")
                ViewData("ID_TIPO_DOCUMENTO") = varListado
    
                Return View(varServicio.ListarAsegurados)
            Else
                varListado = New SelectList(varServicio.ListarTiposDocumentos, "ID_TIPO_DOCUMENTO", "DESC_TIPO_DOCUMENTO", CLng(Request.Form("ID_TIPO_DOCUMENTO")))
                ViewData("ID_TIPO_DOCUMENTO") = varListado
    
                If String.IsNullOrEmpty(varDocumentoAsegurado) Then
                    Return View(varServicio.ListarAseguradosPorApellidosNombres(varNombresAsegurado))
                Else
                    Return View(varServicio.ListarAseguradosPorDocumento(CLng(varListado.Items(0).ID_TIPO_DOCUMENTO), varDocumentoAsegurado))
                End If
            End If
        End Function
    

    功能

    Public Function GetSearchConditionValue(ByVal parCondicionesDeBusqueda As IDictionary(Of String, String), ByVal parClave As String) As String
        Dim varValorTemporal As String = String.Empty
    
        'If parCondicionesDeBusqueda IsNot Nothing AndAlso parCondicionesDeBusqueda.Keys.Contains("StudentName") Then
        If parCondicionesDeBusqueda IsNot Nothing Then
            parCondicionesDeBusqueda.TryGetValue(parClave, varValorTemporal)
        End If
        Return varValorTemporal
    End Function
    

    您可以在http://www.cnblogs.com/jack86514/archive/2010/10/26/1861109.html找到原帖

    【讨论】:

      【解决方案2】:

      您可以通过过滤结果进行搜索。

      您可以添加一个文本框,其中包含要搜索的字段,然后在返回所有结果过滤器以及文本框的内容之前

      【讨论】:

      • 我已经尝试过了,但是当结果分页时,用于搜索的文本框文本丢失(在更改页面上)即使我放 ViewData("mytextbox") = Request.Form("mytextbox" ) 保留搜索过滤器。
      • 你知道更干净的方法吗?该解决方案有效,但对于附加参数来说会变得非常庞大。
      猜你喜欢
      • 2012-09-03
      • 2012-05-05
      • 2012-12-01
      • 2013-10-09
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      相关资源
      最近更新 更多