我最終捕獲了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