【问题标题】:Asp.net MVC dynamic WEBGRID search all column then to update webgrid in same viewAsp.net MVC 动态 WEBGRID 搜索所有列,然后在同一视图中更新 webgrid
【发布时间】:2015-09-15 10:44:51
【问题描述】:

我有动态 webgrid,我只想搜索所有列。但我需要 Jquery 代码 我尝试 2. 控制器只返回视图但它没有运行

我的控制器:

<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

用 jquery 赋予属性:

  1. 视图启动时控制器运行
  2. 当您在文本中搜索并输入文本时控制器运行

<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

我的观点:

    <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 应该让 webgrid 更新:

【问题讨论】:

  • 我无法理解您的问题。 Read here 如何提出一个好问题。
  • alert("çalıştım",data) 此代码应更改,因为数据似乎只有 {object,object}。我希望此数据应为 ,webgrid grid=new webgrid(此数据)

标签: javascript jquery html asp.net asp.net-mvc


【解决方案1】:
 **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>

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2018-04-01
    • 2014-07-21
    • 2013-01-09
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多