Я пытаюсь использовать раскрывающийся список в EditItemTemplate FormView.Я заполняю раскрывающийся список из таблицы данных.Раскрывающийся список заполняется, как и ожидалось, но когда я пытаюсь сохранить изменения, раскрывающееся поле становится пустым.Как сохранить выбранное значение при внесении изменений в FormView?
Обычно я просто помещал бы SelectedValue = '<% # Bind ("Surname")%>' в раскрывающуюся разметку, но, по-видимому, я могу 't, поскольку я заполняю его в коде позади.
Вот разметка раскрывающегося списка:
<asp:DropDownList runat="server" ID="SurnameDdl" AppendDataBoundItems="True" ></asp:DropDownList>
Вот код данных, который я использую для заполнения раскрывающегося списка:
private DataTable GetAdUsers()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[6]
{
new DataColumn("givenName", typeof (string)),
new DataColumn("sn", typeof (string)),
new DataColumn("mail", typeof (string)),
new DataColumn("department", typeof (string)),
new DataColumn("manager", typeof (string)),
new DataColumn("DisplayField", System.Type.GetType("System.String"), "sn + ' ,' + givenName + ' ' + mail")
});
using (var context = new PrincipalContext(ContextType.Domain, null))
{
using (var group = (GroupPrincipal.FindByIdentity(context, "TWIA Underwriting"))) //Options include Users, Everybody, Agent Services, UnderwritingAdmin
{
var users = group.GetMembers(true);
foreach (UserPrincipal user in users)
{
DirectoryEntry de = user.GetUnderlyingObject() as DirectoryEntry;
dt.Rows.Add
(
Convert.ToString(de.Properties["givenName"].Value),
Convert.ToString(de.Properties["sn"].Value),
Convert.ToString(de.Properties["mail"].Value),
Convert.ToString(de.Properties["department"].Value),
Regex.Replace((Convert.ToString(de.Properties["manager"].Value)), @"CN=([^,]*),.*$", "$1"),
de.Properties["DisplayField"].Value
);
}
}
}
return dt;
}
Вот событие OnDataBound FormView:
protected void fvPhaudDets_OnDataBound(object sender, EventArgs e)
{
if (fvPhaudDets.CurrentMode == FormViewMode.Edit)
{
DropDownList ddl = null;
ddl = (DropDownList)fvPhaudDets.FindControl("SurnameDdl");
ddl.DataSource = GetAdUsers();
ddl.DataTextField = "DisplayField";
ddl.DataValueField = "sn";
ddl.DataBind();
ddl.SelectedValue = "Surname";
}
}
Нужно ли также добавить событие и код в раскрывающийся список?Если да, то что нужно?