我如何将数据发送到同一页面上编辑邮箱? [英] How do i send the data to edit boxes on the same page?

查看:320
本文介绍了我如何将数据发送到同一页面上编辑邮箱?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经生成以下页

在这里输入的形象描述

当我点击编辑链接,记录数据必须被送到德同一个页面上输入框(无需刷新页面)

when i click the Edit link, the record data must be sent to the input boxes on teh same page (without refreshing the page)

目前,我有控制器code和意见

currently i have the controller code and views

控制器:产品分类

    public class ProductCategoryController : Controller
    {
        //
        // GET: /ProductCategory/

        TUDBEntities _db = new TUDBEntities();

        public ActionResult Index(string Code)
        {
            var categories = _db.mt_ProductCategories
                                .Where(pc => Code == "" || Code == null|| pc.CatCode == Code)
                                .Select(
                                c => new ProductCategory {
                                    Id = c.Id, 
                                    CategoryCode = c.CatCode, 
                                    Name = c.CatName, 
                                    Url = c.Url 
                                });

            if (Request.IsAjaxRequest())
            {
                return PartialView("_ProductCategoryList", categories);
            }

            return View(categories);

        }

        [HttpPost]
        public ActionResult Save(ProductCategory userData)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    mt_ProductCategories cat = new mt_ProductCategories { CatCode = userData.CategoryCode, CatName = userData.Name };
                    // TODO: Add insert logic here
                    _db.mt_ProductCategories.Add(cat);
                    _db.SaveChanges();

                    return RedirectToAction("Index");                    
                }

                return View();
            }
            catch
            {
                return View();
            }
        }

        public ActionResult Edit(int id)
        {
            var category = _db.mt_ProductCategories
                            .Where(pc => pc.Id == id)
                            .Select(pc => new ProductCategory 
                            { Id=pc.Id, CategoryCode=pc.CatCode,Name=pc.CatName }).ToList();

            return RedirectToAction("Index", category);
        }
}

索引视图

@model IEnumerable<eComm1.Models.ProductCategory>

@using(Ajax.BeginForm("Save", "ProductCategory", 
    new AjaxOptions { 
 HttpMethod="POST", 
 UpdateTargetId="prod-grid", 
 InsertionMode=InsertionMode.Replace,
 OnSuccess="loaddivdata"

}))
{

  <fieldset class="form-group">
    <label for="Code">Category Code</label>
    <input type="text" class="form-control focus" id="Code" name="CategoryCode" placeholder="Product category code" >
  </fieldset>
  <fieldset class="form-group">
    <label for="ProdName">Product Name</label>
    <input type="text" class="form-control" id="ProdName" name="Name" placeholder="Product Name">
  </fieldset>
     <button type="Submit" class="btn btn-primary">Save</button>
}
<hr />
<div id="prod-grid">
    @Html.Partial("_ProductCategoryList", @Model)
</div>


<script type="text/javascript">

    $(function () {
        $('.focus :input').focus();
    });


    function loaddivdata() {        
        $('#prod-grid').html();
        $('#Code, #ProdName').val('');

    };




    //    $('#prod-grid').load(function () {
    //        $.ajax({
    //            url:'ProductCategoryController/Index', 
    //            method:'GET', 
    //            type:'application/html',
    //            success: function () { alert('called');}
    //        });

    //    });
    //});
</script>

局部视图:_ProductCategoryList

@model IEnumerable<eComm1.Models.ProductCategory>

<div class="panel panel-default">


@if (Model.Count() == 0) {   <div class="panel-heading">Product Categories - <span style='color:red;font-weight:bold' >0 RESULTS FOUND</span></div> 
}else{
      <!-- Default panel contents -->
  <div class="panel-heading">Product Categories</div>
}


  <!-- Table -->
  <table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.CategoryCode)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Url)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.CategoryCode)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Url)
        </td>
        <td>
            @*@Html.beActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })*@

            @Ajax.ActionLink("Edit", "Edit", "ProductCategory", new { id=item.Id}, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "", OnSuccess = "loadformdata" }) | 
            @Ajax.ActionLink("Delete", "Delete", "ProductCategory", new { id=item.Id}, new AjaxOptions{ HttpMethod="POST", UpdateTargetId="", OnSuccess="loadformdata"}) 

         </td>
    </tr>
}

</table>


</div>

如何修改我的code发送数据的输入控制,并在我的code如何创建为Id值的隐藏字段,以便它可以被发送给编​​辑(收集,INT ID)行动更新记录?

How do i modify my code to send data those input control and in my code how do i create hidden field for Id value so it can be send to the Edit(collection, int id) action to update the record?

斯蒂芬Muecke,我已经通过捆绑加了我的jQuery文件

for Stephen Muecke, i have added my jquery files through the bundles

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/ecomm").Include(
        "~/Scripts/jquery-{version}.js",
        "~/Scripts/jquery-2.1.4.min.js",
        "~/Scripts/bootstrap.js",
        "~/Scripts/bootstrap.min.js",
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*"
        ));

    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                "~/Scripts/jquery-{version}.js"));

    bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                "~/Scripts/jquery-ui-{version}.js"));

    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                "~/Scripts/jquery.unobtrusive*",
                "~/Scripts/jquery.validate*"));

    // Use the development version of Modernizr to develop with and learn from. Then, when you're
    // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
    bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                "~/Scripts/modernizr-*"));

    bundles.Add(new StyleBundle("~/Content/css").Include(
        "~/Content/bootstrap.min.css",
        "~/Content/bootstrap.css", 
        "~/Content/style.css"));

    bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                "~/Content/themes/base/jquery.ui.core.css",
                "~/Content/themes/base/jquery.ui.resizable.css",
                "~/Content/themes/base/jquery.ui.selectable.css",
                "~/Content/themes/base/jquery.ui.accordion.css",
                "~/Content/themes/base/jquery.ui.autocomplete.css",
                "~/Content/themes/base/jquery.ui.button.css",
                "~/Content/themes/base/jquery.ui.dialog.css",
                "~/Content/themes/base/jquery.ui.slider.css",
                "~/Content/themes/base/jquery.ui.tabs.css",
                "~/Content/themes/base/jquery.ui.datepicker.css",
                "~/Content/themes/base/jquery.ui.progressbar.css",
                "~/Content/themes/base/jquery.ui.theme.css"));
}

在局部视图

    @Ajax.ActionLink("Edit", "Edit", "ProductCategory", new { id = item.Id }, new AjaxOptions { HttpMethod = "GET", OnSuccess = "loadformdata" }) | 
    @Ajax.ActionLink("Delete", "Delete", "ProductCategory", new { id=item.Id}, new AjaxOptions{ HttpMethod="POST", OnSuccess="loadformdata"}) 

在指数查看以下js函数:

in the index view the following js function:

功能loadformdata(){

function loadformdata() {

var cells = $(this).closest('tr').children('td');
alert(cells.eq(0).text());
//$('#Code').val(cells.eq(0).text());
//$('#ProdName').val(cells.eq(1).text());

}

要:斯蒂芬Muecke:
我上面loadformdata已删除(),并把一切都如你所说。 此YouTube视频显示,仍然无法调用click事件的问题

To: Stephen Muecke: i have removed above loadformdata() and put everything as you said. this youtube video shows the problem that still does not call that click event

要:史蒂芬Meucke:
还是有没有运气,为便于我已经在功能和警报(增加了一个警报())将不会显示。 这里是

To: Steven Meucke: there's still no luck, for ease i have added a alert() in the function and the alert() won't show. Here is the video

推荐答案

给你'编辑'链接一个类名(说)类=编辑和处理其。点击()事件来更新表单控件

Give you 'Edit' link a class name (say) class="edit" and handle its .click() event to update the form controls

$('.edit').click(function() {
  var cells = $(this).closest('tr').children('td');
  $('#Code').val(cells.eq(0).text());
  $('#ProdName').val(cells.eq(1).text());
  return false; // cancel the default redirect
});

旁注:你可以只更换的ActionLink() code。与&LT; A HREF =#类=编辑&gt;编辑&LT; / A&GT; 返回false; 行是没有必要的。

Side note: You could just replace the ActionLink() code with <a href="#" class="edit">Edit</a> and the return false; line is not necessary.

这篇关于我如何将数据发送到同一页面上编辑邮箱?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆