我有一个下拉列表(FK),我想根据登录用户ID设置和显示默认值。请告诉我如何做到这一点?我只想影响出现在GridView上方的下拉筛选器。
谢谢
Nikos
我有一个下拉列表(FK),我想根据登录用户ID设置和显示默认值。请告诉我如何做到这一点?我只想影响出现在GridView上方的下拉筛选器。
谢谢
Nikos
Response.Redirect("~/Employees/List.aspx?ReportsTo=1234");
foreach (DetailsViewRow row in DetailsView1.Rows)
{
foreach (Control ctl in row.Controls)
foreach (Control c in ctl.Controls)
foreach (Control x in c.Controls)
{
if (x.ClientID.Contains("tblName"))
{
foreach (Control y in x.Controls)
{
if (y.ClientID.Contains("DropDownList"))
{
ddl = y as DropDownList;
ddl.SelectedValue = Convert.ToString(UserId);
ddl.Enabled = false;
}
}
}
}
}
这是一个通用的更改,还是只针对一个外键关系?
假设它只针对一个外键关系,您可以创建一个新的FieldTemplate,仅用于该关系。 新的FieldTemplate将是默认“ForeignKey” FieldTemplate的副本。 在New FieldTemplate中修改OnDataBinding(或Page_PreRender)事件以设置DropDownList的“默认值”。
然后,为了强制使用New FieldTemplate来处理该关系,您需要在表示该外键关系的实体类成员上使用System.ComponentModel.DataAnnotations.UIHint属性。 (下面是链接)
http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.uihintattribute.uihint.aspx 或http://www.asp.net/learn/3.5-SP1/video-291.aspx(大约在07:30分钟左右)
如果需要一些帮助,您可以查看CodePlex上的DynamicData Futures发布。特别是“使用过滤器中的值填充插入模板”部分。http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14475
我已经找到了一个解决方法,但是如果有更优雅的解决方案我也愿意尝试。
我在FilterUserControl.ascx.cs中编辑了以下行代码,并在PopulateListControl(DropDownList1)之后插入了它:
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("Bob")); // 用户名只是用于测试而硬编码
这个方法似乎可行,但如果可能的话,我更愿意使用带元数据的自定义部分类来解决这个问题。