我的asp.net页面中有一个devexpress gridview,它有一个过滤行。内置功能需要我从第一个字母过滤而不是之间的字母。
所以“萨”会找到“塞缪尔”而不是“山姆大叔”。要搜索“山姆大叔”,我需要使用%sa%。我的客户不希望这样。
我找到了一个解决方案,要求我对gridview中的每个字段使用Settings-AutoFilterCondition =“Contains”。我在asp.net程序中有超过20s的gridview。
是否可以同时为所有gridview设置默认值?
由于
答案 0 :(得分:2)
我建议您根据现有主题创建一个新的ASP.NET主题,并在外观文件中更改此属性。在这种情况下,您将收到整个网站所需的结果,而不会更改一行代码:)
答案 1 :(得分:1)
您可以在后面的代码的PageLoad事件中设置它,如下所示:
[VB.NET]
Protected Sub Page_Load(sender As Object, e As EventArgs)
For Each col As GridViewDataColumn In grid.Columns
col.Settings.AutoFilterCondition = AutoFilterCondition.Contains
Next
End Sub
答案 2 :(得分:0)
我通过以下方式实现了这个目标:
添加了以下扩展方法来减少工作,它返回一个类型的所有控件:
public static IEnumerable<T> GetAllControlsOfType<T>(this Control parent) where T : Control
{
var result = new List<T>();
foreach (Control control in parent.Controls)
{
if (control is T)
{
result.Add((T)control);
}
if (control.HasControls())
{
result.AddRange(control.GetAllControlsOfType<T>());
}
}
return result;
}
将以下内容添加到我的基页OnLoad事件(继承自页面,我的所有页面继承自),如果您不使用我推荐的基页,否则您可以将其添加到每个页面。
this.GetAllControlsOfType<ASPxGridView>()
.SelectMany(gv => gv.Columns.OfType<GridViewDataTextColumn>())
.ForEach(c => c.Settings.AutoFilterCondition = AutoFilterCondition.Contains);