c# - 在 asp.net MVC 中使用 jQuery 和 AJAX 自动填充选择框

标签 c# jquery ajax asp.net-mvc-4 hierarchical-data

1-问题:我需要让用户能够从大量信息中选择一个或多个事物,这些信息被分组为层次结构以供选择、数据输入,数据可以有 4、5 个父类别的深度。

我正在寻找的 2 个功能: 类似于 eBay,在选择项目类别时会显示级联列表。当页面显示时,您只会得到第一个列表框。在第一个中选择一个后,将显示第二个。该过程一直持续到所选类别没有子类别为止。

} ebay example

3-实表及查询: 表:

-int Id

-字符串名称

-int ParentId

查询:

public IList<CategoryTable> listcategories(int parentId)

            {
            var query = from c in categorytable
                        where c.ParentId == parentId
                        select c;

                var result= query.ToList();
                return result;
}

4-我不知道如何开始,任何指南、现场示例 jsfiddle、演示或教程将不胜感激。 桥

更新:我相信这个功能在网络教程和问题中不是很发达。因此,我开始悬赏一个很好的答案。我将为之前评论过的功能的实例分配赏金。谢谢!

最佳答案

我通过处理大量数据学到的是:

  • 不要尝试一次将所有数据加载到客户端
  • 只加载客户端实际需要的数据
  • 在数据库中进行过滤、搜索和排序,例如通过存储过程。特别是对于分布在多个表中的数据。
  • 优化你的数据库查询,索引很好
  • 始终牢记您期望同时进行多少次查询
  • linq 很好,但在处理大数据时并不适用于所有情况
  • 花时间思考和计划真正需要哪些数据

要在您的网页上显示数据,有许多 jQuery 插件可以列出您可以将函数绑定(bind)到“选定”事件的数据。例如 MVC4 自带的 knockOut.js。您可能不需要完全加载的 jQuery“hierachical-data-list-display”-plugin。也许您可以通过使用“选定”事件、ajax 加载和显示/隐藏功能来实现它。

根据您的评论,我会想到 jQuery 和 MVC 的组合:

  • 在 MVC 中,我会创建一个像这样的局部 View

    @model MvcApplication.Models.DataModel
    
    <ol id="@Model.DataCategorieLevel">
    
    @for (var i = 0; Model.Data.Count > i; i++)
    {
        <li value="@Model.Data[i].ItemId" onclick="itemSelected(@Model.Data[i].ItemId, @Model.DataCategoryLevel);" >@Model.Data[i].ItemName</li>
    }
    
    </ol>
    
  • javascript 可能是这样的:

    function itemSelected(selectedItemId, itemCategoryLevel) {
        // ajax call to an action which loads the next categorie items into the partial view and returns them
        // on success remove all lists with an category - level lower than itemCategoryLevel
        // append the returned List to the HTML-container which holds the lists
    }
  • 在调用的 MVC-Action 中,我将确定它是否是最后一个类别级别。如果是最后一级,我会返回一个与其他 onclick 事件绑定(bind)不同的局部 View

在我开始寻找一些插件之前,这是我要尝试实现的

关于c# - 在 asp.net MVC 中使用 jQuery 和 AJAX 自动填充选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15717573/

相关文章:

c# - 以原子方式从 ConcurrentQueue 中获取所有内容

c# - 基于原始 SDK 的 kinect 数据需要什么校正数学

javascript - ajax 返回 true,但 == 返回 false

php - 来自mysql的分页数据表,自动刷新

javascript - Ajax 调用 DURING 另一个 Ajax 调用来接收服务器的任务计算状态并将其作为进度条显示给客户端

c# - 基本 NLog 文件目标在 IIS 8 和 Windows Server 2012 下不工作

c# - 打开 C# Windows 应用程序的新实例

javascript - 选择和取消选择多个复选框

jQuery mouseenter 和 z-index 不能正常工作

javascript - jQuery 中的大括号