如何解决更改列过滤器的默认选项
是否可以更改所有列过滤器的默认选项?我很确定我可以用一些 JavaScript 来完成这个,但我想知道在 Acumatica 框架中是否有任何方法可以改变这一点。
解决方法
答案是否定的。过滤器位于 PX.Web.UI.dll
类中的 PXGridFilter
内,该类是一个内部类。您感兴趣的属性是 Condition
。
该值是在 PXGrid
类的私有方法之一内设置的。该方法的代码如下:
private IEnumerable<PXGridFilter> ab()
{
List<PXGridFilter> list = new List<PXGridFilter>();
if (this.FilterID != null)
{
Guid? filterID = this.FilterID;
Guid guid = PXGrid.k;
if (filterID == null || (filterID != null && filterID.GetValueOrDefault() != guid))
{
using (IEnumerator<PXResult<FilterRow>> enumerator = PXSelectBase<FilterRow,PXSelect<FilterRow,Where<FilterRow.filterID,Equal<Required<FilterRow.filterID>>,And<FilterRow.isUsed,Equal<True>>>>.Config>.Select(this.DataGraph,new object[]
{
this.FilterID.Value
}).GetEnumerator())
{
while (enumerator.MoveNext())
{
FilterRow row = enumerator.Current;
string dataField = row.DataField;
PXCache pxcache = PXFilterDetailView.TargetCache(this.DataGraph,new Guid?(this.FilterID.Value),ref dataField);
if (this.Columns[row.DataField] != null)
{
List<PXGridFilter> list2 = list;
int valueOrDefault = row.OpenBrackets.GetValueOrDefault();
string dataField2 = row.DataField;
string dataField3 = row.DataField;
int value = (int)row.Condition.Value;
object value2 = pxcache.ValueFromString(dataField,row.ValueSt);
string valueText = row.ValueSt.With((string _) => this.Columns[row.DataField].FormatValue(_));
object value3 = pxcache.ValueFromString(dataField,row.ValueSt2);
string value2Text = row.ValueSt2.With((string _) => this.Columns[row.DataField].FormatValue(_));
int valueOrDefault2 = row.CloseBrackets.GetValueOrDefault();
int? @operator = row.Operator;
int num = 1;
list2.Add(new PXGridFilter(valueOrDefault,dataField2,dataField3,value,value2,valueText,value3,value2Text,valueOrDefault2,@operator.GetValueOrDefault() == num & @operator != null));
}
}
return list;
}
}
}
if (this.FilterRows != null && this.FilterRows.Count > 0)
{
for (int i = 0; i < this.FilterRows.Count; i++)
{
PXFilterRow row = this.FilterRows[i];
list.Add(new PXGridFilter(row.OpenBrackets,row.DataField,(int)row.Condition,row.Value,row.Value.With(delegate(object _)
{
if (this.Columns[row.DataField] == null)
{
return _.ToString();
}
return this.Columns[row.DataField].FormatValue(_);
}),row.Value2,row.Value2.With(delegate(object _)
{
if (this.Columns[row.DataField] == null)
{
return _.ToString();
}
return this.Columns[row.DataField].FormatValue(_);
}),row.CloseBrackets,row.OrOperator));
}
}
return list;
}
更新
以下 JS 代码允许您更改最后设置的过滤器的条件:
px_all.ctl00_phG_grid_fd.show();
px_all.ctl00_phG_grid_fd_cond.items.items[7].setChecked(true);
px_all.ctl00_phG_grid_fd_ok.element.click();
px_all.ctl00_phG_grid_fd_cond.items.items[7].value "EQ" px_all.ctl00_phG_grid_fd_cond.items.items[8].value "NE" px_all.ctl00_phG_grid_fd_cond.items.items[9].value "GT" px_all.ctl00_phG_grid_fd_cond.items.items[13].value "LIKE" px_all.ctl00_phG_grid_fd_cond.items.items[14].value "LLIKE" px_all.ctl00_phG_grid_fd_cond.items.items[15].value "RLIKE" px_all.ctl00_phG_grid_fd_cond.items.items[16].value "NOTLIKE" px_all.ctl00_phG_grid_fd_cond.items.items[18].value "ISNULL" px_all.ctl00_phG_grid_fd_cond.items.items[19].value "ISNOTNULL"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。