我最终捕获了PageTemplates/list.aspx上的FilterRepeater.ItemDataBound事件,并寻找了MetaForeignKeyColumn和我想要处理的过滤器的名称。然后使用模型查找用户数据并设置所选值以匹配登录用户。
以下代码来自我的测试,需要清理:TK_DBA是数据库管理员使用应用程序的参考表并作为引用它的表的过滤器出现。
protected void Page_Init(object sender, EventArgs e)
{
DynamicDataManager1.RegisterControl(GridView1, true /*setSelectionFromUrl*/);
FilterRepeater.ItemDataBound += new RepeaterItemEventHandler(FilterRepeater_ItemDataBound);
}
void FilterRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
object e1 = e.Item.DataItem;
MetaForeignKeyColumn e2 = e.Item.DataItem as MetaForeignKeyColumn;
Test2.FilterUserControl e3 = ((RepeaterItem)e.Item).FindControl("DynamicFilter") as Test2.FilterUserControl;
if (e2 != null && e2.Name == "TK_DBA")
{
var dba = e2.Model.GetTable("TK_DBA").GetQuery().OfType<Test2.Model.TK_DBA>();
var q = from d in dba
where d.userid == HttpContext.Current.User.Identity.Name
select d;
if (q.Count() == 1) e3.DropDownList1.SelectedValue = q.First().id.ToString();
}
}
你的问题是非常模糊 – 2009-12-30 19:44:08