John、HideColumnIn和ReadOnlyColumnIn是隐藏列而不是过滤器(外键过滤器)的属性。
您可以使用多种方法解决此问题。
第一种方式,如果您使用的是.NET Framework 4.5或.NET Framework 4,您可以使用DisplayAttribute的AutoGenerateFilter 属性。例如,
[Display(Name = "Invoicing Complete", AutoGenerateFilter = false)]
您可以在AutoGenerateFilter上找到更多信息。
第二种方法是创建新属性(如HideColumnIn),然后为ForeignKey过滤器更改 Code-Behind。
一些例子:
HideFilterAttribute.cs
using System;
namespace iSite.Classes.Attributes
{
[AttributeUsage(AttributeTargets.Property)]
public class HideFilterAttribute : Attribute
{
public Boolean Hide { get; private set; }
public HideFilterAttribute(Boolean hide)
{
this.Hide = hide;
}
// default
public static HideFilterAttribute Default =
new HideFilterAttribute(false);
}
}
外键.ascx.cs
public partial class ForeignKeyFilter : System.Web.DynamicData.QueryableFilterUserControl
{
protected void Page_Init(object sender, EventArgs e)
{
string initialValue = DefaultValue;
if (initialValue == null && Column.Attributes.OfType<HideFilterAttribute>().DefaultIfEmpty(HideFilterAttribute.Default).First().Hide)
{
this.NamingContainer.Visible = false;
}
else
{
PopulateListControl(DropDownList1);
if (!String.IsNullOrEmpty(initialValue))
{
ListItem li = new ListItem();
li = DropDownList1.Items.FindByValue(initialValue);
DropDownList1.Items.Clear();
DropDownList1.Items.Add(li);
}
}
}
}
第三种和第四种方式没有 DynamicData 方式。您可以为此列使用自定义过滤器,并通过Visible属性隐藏 DropDownList 控件。您还可以通过 jQuery 库隐藏 DropDownList 控件。