在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord { ... } class Post extends CActiveRecord { ... function relations() { return array( 'author'=>array( self::BELONGS_TO, 'Author', 'id_author' ), ); } ... }
当以网格形式显示所有 Post 时,我们希望显示作者的名字,并且可以通过作者名字中的关键字过滤 Post。提供这些功能的最好解决方式(在我看来)是:
首先需要在 Post 模型中添加一个新的属性,它用来保存搜索的字符串(即要搜索的作者名).也可以使用外键列来实现同样的效果,但是我不喜欢这么用,在搜索条件中保存搜索的字符串而不是外键 id.你还须在搜索条件中将这个新的属性的规则设置为 safe
。
class Post extends CActiveRecord { public $author_search; ... public function rules() { return array( ... array( 'xxx,yyy,author_search', 'safe', 'on'=>'search' ), ); } }
现在就可以在搜索条件(标准情况-每个模型都要一个 search 方法)中使用这个属性了。同时,我们需要使用条件的 ‘with’ 属性来指定我们的 Post 是通过哪个关系来获取作者(这种方式只需一次数据库查询而不是延迟加载中的多次查询)。
$criteria = new CDbCriteria; $criteria->with = array( 'author' ); ... $criteria->compare( 'author.username', $this->author_search, true ); ...
当我们修改搜索函数时,我们对返回的 CActiveDataProvider 添加一个新的功能
return new CActiveDataProvider( 'Post', array( 'criteria'=>$criteria, 'sort'=>array( 'attributes'=>array( 'author_search'=>array( 'asc'=>'author.username', 'desc'=>'author.username DESC', ), '*', ), ), ));
配置中排序部分的 attributes
允许我们覆盖默认值。当我们按 author_search
字段排序的时候,它将会按照指定的规则排序,最后的 *
表示其他字段按默认排序。通过这种方式我们也可以修改默认属性的排序(例如:用户指定按 last_name 列排序时,应该使用last_name和first_name结合排序).
到现在为止我们已经为我们的网格显示做好了前期准备
$this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( 'title', 'post_time', array( 'name'=>'author_search', 'value'=>'$data->author->username' ), array( 'class'=>'CButtonColumn', ), ), ));
这就是所有,我们使用用户名代替用户ID外键列来排序,并且我们可以使用姓名关键字搜索.
相关推荐
在这个场景中,我们需要在GridView中添加超链接字段,以便用户点击后能跳转到另一个页面,并传递特定的参数。这涉及到几个关键的知识点,包括但不限于HTML渲染、事件处理以及URL路由。 首先,让我们了解如何在...
4. 如果需要对关联模型的字段进行搜索,可以在模型的`search`方法中使用`joinWith`方法来关联需要搜索的模型。然后在搜索条件中添加过滤条件。 知识点五:关联字段的实现方法 在Yii2中,对于关联模型的字段,需要...
5. **绑定字段和显示外键数据**:在GridView中,为每个字段设置DataField属性,对于外键字段,可以使用TemplateField来显示关联的详细信息。例如,对于`CustomerId`字段,可以创建一个TemplateField,然后使用...
GridView是ASP.NET中的一个控件,用于显示来自数据源的数据,并允许用户进行排序、分页和编辑。在ArcGIS Server中,它通常与ArcGIS服务结合,用于显示地图服务或地理处理服务返回的属性数据。 隐藏字段涉及到对数据...
总结,这个教程详细解释了如何在GridView中使用模板列和DropDownList,以及如何处理外键关联的数据。对于初学者来说,这是一个很好的实践项目,可以帮助理解ASP.NET中数据绑定和编辑功能的实现。通过这种方式,...
通过分析和运行这些代码,你可以更深入地理解如何在实际应用中实现Dev GridView的拖拽行排序功能。 总的来说,实现Dev GridView的拖拽行排序涉及多个事件的处理和数据源的动态调整。这个特性增强了用户交互性,使得...
### 如何在ASP.NET中获取GridView字段值 在ASP.NET Web应用程序中,`GridView`控件是一种非常常用的数据展示方式,它可以将数据源中的数据以表格的形式显示出来,并且提供了强大的自定义功能,如排序、分页等。本文...
在ASP.NET开发中,GridView控件是一个非常常用的数据展示组件,尤其在Web应用程序中,它能够方便地显示和操作数据库中的数据。本程序的核心在于利用C#语言来实现GridView的排序和分页功能,这对于提高用户体验和提升...
在ASP.NET MVC框架中,GridView控件通常用于展示数据,特别是在需要进行数据排序、分页和筛选时。这个例子将深入探讨如何在MVC模式下有效地利用GridView来处理和显示数据。 首先,GridView控件在ASP.NET Web Forms...
在.NET框架中,GridView控件是ASP.NET网页开发中常用的一种数据展示工具,它能够方便地展示数据库或其他数据源中的数据,并提供了丰富的功能,如分页、排序、筛选等。本篇文章将深入探讨如何实现GridView的排序功能...
标题“GridView正反排序(C#)”明确指出本文将探讨如何在ASP.NET Web Forms项目中使用C#语言实现`GridView`控件的排序功能。这里的“正反排序”通常指的是升序(Ascending,简称ASC)和降序(Descending,简称DESC)...
本文主要探讨了如何在*** 2.0中使用GridView控件创建一个能够自定义排序的用户界面,并着重讲解如何在相同类别的数据前添加分界行来提升用户体验。 首先,要创建一个能够排序的GridView,需要设置GridView控件的...
4. **数据绑定**:子GridView的数据源通常与主GridView中的某一列关联,可以通过主键-外键关系实现。在`CustomRowCellEdit`事件中,根据主GridView当前行的数据,找到对应的子级数据并绑定到子GridView。 5. **事件...
在本文中,我们将深入探讨GridView的使用技巧、大全、常见问题以及常用方法,旨在帮助开发者更好地理解和应用这一强大的工具。 1. GridView简介: GridView控件允许用户以表格的形式显示数据,通常与数据源(如...
本示例展示了如何在ASP.NET Web Forms应用中使用GridView控件进行服务器端排序。通过处理`Sorting`和`Sorted`事件,可以实现对数据的有效管理与展示。此外,还可以根据实际需求自定义更多功能,如添加图标指示排序...
在本项目中,我们探讨的主题是“GridView内嵌套使用GridView”,这通常是为了实现更复杂的数据显示,例如,当数据有层次关系时,可以通过内嵌套的方式展现这些层次结构。 在Visual Studio 2005环境下,开发人员可以...
在ASP.NET开发中,GridView控件是一个非常常用的用于显示...以上就是关于在ASP.NET中使用GridView控件添加行内按钮以及处理行操作的基本知识。在实际应用中,可能还需要考虑错误处理、权限验证和其他用户体验优化措施。
在本教程中,我们将深入探讨如何实现GridView查询排序和分页功能。 首先,GridView控件的核心在于它与数据源的绑定。在ASP.NET中,我们通常会使用SQLDataSource、ObjectDataSource或EntityDataSource等数据源控件来...
在实际的网页开发中,用户可能需要对显示的数据进行正反双向排序,即点击列头可以按照升序或降序对数据进行排序。本篇文章将详细介绍如何在GridView中实现这种功能。 首先,我们需要在页面上添加一个GridView控件,...