سلام استاد مدائنی بزرگوار
یک مشکل داشتم که ممنون میشم راهنمائی بفرمائید:
یک ویو دارم که درون آن یک WebGrid هست و یک تکست باکس و دکمه سرچ ، با لود اولیه page, همه رکوردها در گرید لود میشود و وقتی متنی را در تکست باکس وارد میکنم و دکمه سرچ را کلیک میکنم، اطلاعات بدرستی از کنترلر دریافت و در WebGrid نمایش داده میشود. اما مشکل اینه که با فشردن دکمه سرچ ،کل صفحه رفرش میشود. از ajax.beginform استفاده کرده ام، اما نمیدونم کجای کارم ایراد داره. میخام با انجام عملیات جستجو، فقط گرید بروزرسانی بشه و بقیه آیتمهای موجود در page رفرش نشن. لطفاً راهنمائی فرمائید
این کد کنترلر هست:
Function Index() As ActionResult
Return View(db.Brands.ToList())
End Function
Function BrandList(strName As String) As ActionResult
If strName = Nothing Then
Return PartialView(db.Brands.ToList())
Else
Return PartialView(db.Brands.Where(Function(x) x.Name.Contains(strName)).ToList())
End If
End Function
و این index.vbhtml
@Using (Ajax.BeginForm("BrandList", "Brand", FormMethod.Post,
New AjaxOptions With {.UpdateTargetId = "GridList"}))
End Using
<section Class="panel">
<header Class="panel-heading tab-bg-dark-navy-blue">
<label class="bg-transparent wht-color">برندها</label>
</header>
<div Class="panel-body pull-left">
@Using (Html.BeginForm("Index", "Brand", FormMethod.Get))
@Html.TextBox("strName", Nothing, New With {.class = "form-control", .PlaceHolder = "جستجو"})
@<Button type="submit" value="" style="display: none"></Button>
End Using
</div>
<div id="GridList">
@Html.Action("BrandList")
</div>
</section>
<div Class="pull-left btn-toolbar">
<div Class="btn btn-default">
@Html.ActionLink(" ", "BrandAdd", Nothing, htmlAttributes:=New With {.class = "glyphicon glyphicon-plus btn btn-small", .data_toggle = "tooltip", .data_placement = "top", .title = "اضافه کردن سطر جدید"})
</div>
<div Class="btn btn-default">
@Html.ActionLink(" ", "Index", Nothing, htmlAttributes:=New With {.class = "glyphicon glyphicon-tasks btn btn-small", .data_toggle = "tooltip", .data_placement = "top", .title = "لیست برندها"})
</div>
</div>
<script type="text/javascript">
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
</script>
و این partial view
@ModelType IEnumerable(Of Machinary.Brand)
@Code
Dim wg As New WebGrid(Model, rowsPerPage:=10, canPage:=True, canSort:=True, ajaxUpdateContainerId:="wg1")
Dim rowIndex = ((wg.PageIndex + 1) * wg.RowsPerPage) - (wg.RowsPerPage - 1)
End Code
@wg.GetHtml(tableStyle:="table table-bordered table-hovor", mode:=WebGridPagerModes.All,
htmlAttributes:=New With {.id = "wg1", .class = "Grid"},
firstText:="<<",
lastText:=">>",
footerStyle:="table-pager",
columns:=wg.Columns(
wg.Column("Name", Sorter("Name", "عنوان", wg)),
wg.Column(header:="عملیات", format:=Function(item) New HtmlString(
Html.ActionLink(" ", "BrandEdit", New With {.id = item.id}, htmlAttributes:=New With {.class = "glyphicon glyphicon-edit btn btn-info btn-sm", .data_toggle = "tooltip", .data_placement = "top", .title = "ویرایش"}).ToString() + " " +
Html.ActionLink(" ", "BrandDelete", New With {.id = item.id}, htmlAttributes:=New With {.class = "glyphicon glyphicon-trash btn btn-danger btn-sm", .data_toggle = "tooltip", .data_placement = "top", .title = "حذف"}).ToString()))))
@functions
Public Shared Function Sorter(columnName As String, columnHeader As String, grid As WebGrid) As String
Return String.Format("{0} {1}", columnHeader, If(grid.SortColumn = columnName, If(grid.SortDirection = SortDirection.Ascending, "▲", "▼"), String.Empty))
End Function
End Functions
خیلی ممنونم
این VB هست و متاسفانه من بلد نیستم
بررسی کنید رفرنس مربوط به Ajax.BeginForm رو در صفحه داده باشید
وقتی رفرش مشه یعنی Ajax اجرا نمیشه