简体   繁体   English

Asp.net MVC 动态 WEBGRID 搜索所有列然后在同一视图中更新 webgrid

[英]Asp.net MVC dynamic WEBGRID search all column then to update webgrid in same view

I have dynamic webgrid and I want only search all column.我有动态 webgrid,我只想搜索所有列。 But I need to Jquery code I try 2. controller only return view but it isn't run但我需要 Jquery 代码我尝试 2. 控制器只返回视图但它没有运行

My Controller:我的控制器:

<HttpGet()>
    Function NewGrid() As ActionResult

        Dim g As ServiceReference1.Grid = New Grid
        Dim client As ServiceReference1.Service1Client = New ServiceReference1.Service1Client()
        g = client.GetGridInformation("lst_afhFTR")
        Dim column As List(Of ServiceReference1.Column)
        column = g.columnList.ToList
        Dim columnName As List(Of String) = g.columnList.Select(Function(f) f.columnName).ToList()
        client.Close()
        Dim client3 As ServiceReference1.Service1Client = New ServiceReference1.Service1Client()
        Dim result As List(Of Dictionary(Of String, Object)) = client3.GetTableOl(g.gridCode).ToList()
        'WebGrid içine gönderilecek data oluşturulması 
        Dim data = New List(Of ExpandoObject)()
        For Each Pairs In result
            Dim row = New ExpandoObject()
            For Each Pair In Pairs
                DirectCast(row, IDictionary(Of String, Object)).Add(Pair.Key, Pair.Value)
            Next
            data.Add(row)
        Next
        ViewBag.ColumnList = g.columnList
        ViewBag.GridSqlQuery = g.gridCode
        Return View(data)
    End Function

with jquery give property:使用 jquery 给出属性:

  1. controller run when view start控制器在视图启动时运行
  2. controller run when you search in text and text enter当您在文本中搜索并输入文本时运行控制器

<HttpPost()>
    Function NewGrid(columnName As String, columnValue As String) As JsonResult
        Dim g As ServiceReference1.Grid = New Grid
        Dim client As ServiceReference1.Service1Client = New ServiceReference1.Service1Client()
        g = client.GetGridInformation("lst_afhFTR")
        Dim column As List(Of ServiceReference1.Column)
        column = g.columnList.ToList
        ViewBag.ColumnList = g.columnList
        client.Close()
        Dim columnSql As String = "select * from afhFTR_Fatura"
        columnSql = columnSql.ToString() + " where 1 = 1"
        columnSql = columnSql + " and " + columnName + " Like '%" + columnValue.ToString() + "%'"
        Dim client3 As ServiceReference1.Service1Client = New ServiceReference1.Service1Client()
        Dim result As List(Of Dictionary(Of String, Object)) = client3.GetSearchData(columnSql).ToList()
        'WebGrid içine gönderilecek data oluşturulması 
        Dim data = New List(Of ExpandoObject)()
        For Each Pairs In result
            Dim row = New ExpandoObject()
            For Each Pair In Pairs
                DirectCast(row, IDictionary(Of String, Object)).Add(Pair.Key, Pair.Value)
            Next
            data.Add(row)
        Next
     ViewBag.GridSqlQuery = columnSql
    ViewBag.OL = data
        Return Json(data)
    End Function

My View:我的看法:

    <h2>NewGrid</h2>

    <div>
        <table class="table table-bordered">
            @*<tr style="visibility:hidden"><td><input id="Hidden1" type="hidden" value=@ViewBag.Code.ToString() /></td></tr>*@
            <tr>
                @For Each col As ServiceReference1.Column In ViewBag.ColumnList

                    @<td>
                        <input class="search" id=@col.columnName type="text" value="gün" name=@col.columnName style="border-width:1px;width:@col.columnWidth.ToString()px;" />
                    </td>
                Next
            </tr>
        </table>

    </div>
    <div id="olur">
        @Code
            Dim grid As WebGrid = New WebGrid(Model)
            Dim columnsL As List(Of WebGridColumn) = New List(Of WebGridColumn)
            For Each col As ServiceReference1.Column In ViewBag.ColumnList
                columnsL.Add(grid.Column(columnName:=col.columnName, header:=col.columnCaptionValue, format:=Function(item) New MvcHtmlString("<div style='width:" + col.columnWidth.ToString() + "px;'>" +
                       item(col.columnCaptionValue) +
                       "</div>")))
            Next
                @grid.GetHtml(tableStyle:="table table-striped table-bordered", columns:=columnsL)


        End Code

        @*, columnSql:"@ViewBag.GridSqlQuery"*@ 
    </div>
    @ViewBag.GridSqlQuery
    <script type="text/javascript">

        $('body').on('keyup', '.search', function (event) {
            if (event.keyCode == 13) {
              alert('enter key');
              var data = { columnName: $(this).attr('id'), columnValue: $(this).val()};
                $.ajax({
                    url: "/Home/NewGrid",
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json",
                    data: JSON.stringify(data),
                    success: function (data) {

                        alert("çalıştım"+data);
                    }
                });
            }
        });
    </script

alert çalıştım instead should webgrid to update:警报 çalıştım 应该 webgrid 更新:

 **I find at last but answer is rather easy 
>     
>     I add partial view **

**

    Function PartialGrid(columnName As String, columnValue As String) As ActionResult

            Dim g As ServiceReference1.Grid = New Grid
            Dim client As ServiceReference1.Service1Client = New ServiceReference1.Service1Client()
            g = client.GetGridInformation("lst_afhFTR")
            Dim column As List(Of ServiceReference1.Column)
            column = g.columnList.ToList
            ViewBag.ColumnList = g.columnList
            client.Close()



            Dim columnSql As String = "select * from afhFTR_Fatura"
            columnSql = columnSql.ToString() + " where 1 = 1"
            columnSql = columnSql + " and " + columnName + " Like '%" + columnValue.ToString() + "%'"
            Dim client3 As ServiceReference1.Service1Client = New ServiceReference1.Service1Client()
            Dim result As List(Of Dictionary(Of String, Object)) = client3.GetSearchData(columnSql).ToList()

            Dim data = New List(Of ExpandoObject)()
            For Each Pairs In result
                Dim row = New ExpandoObject()
                For Each Pair In Pairs
                    DirectCast(row, IDictionary(Of String, Object)).Add(Pair.Key, Pair.Value)
                Next
                data.Add(row)
            Next
            Return PartialView(data)
        End Function
End Partial View:
@Code
    Dim grid As WebGrid = New WebGrid(Model)
    Dim columnsL As List(Of WebGridColumn) = New List(Of WebGridColumn)
    For Each col As ServiceReference1.Column In ViewBag.ColumnList
        columnsL.Add(grid.Column(columnName:=col.columnName, header:=col.columnCaptionValue, format:=Function(item) New MvcHtmlString("<div style='width:" + col.columnWidth.ToString() + "px;'>" +
               item(col.columnCaptionValue) +
               "</div>")))
    Next
    @grid.GetHtml(tableStyle:="table table-striped table-bordered", columns:=columnsL)


End Code
<h1>Partial view</h1>



  Then  update my script code : 

        <script type="text/javascript">

            $('body').on('keyup', '.search', function (event) {
                if (event.keyCode == 13) {
                    alert('enter key');
                    var data = { columnName: $(this).attr('id'), columnValue: $(this).val()};
                    $.ajax({
                        url: '/Home/PartialGrid',
                        data: JSON.stringify(data),
                        cache: false,
                        type: "POST",
                        contentType: "application/json",
                        dataType: "html",
                        success: function (data) {
                            $("#olur").html(data);
                        }
                    });
                }
            });
        </script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM