ObjectDataSource выбирается до заполнения выпадающего списка данными
Я связываю свой DropDownList во время первой Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Function.LoopChangeControlMtText(this.Controls);
BindProcessingDepartment();
BindDropDownListYear();
if (DropDownListProcessingDepartment.Items.Count > 0)
{
if (DropDownListYear.Items.Count > 0)
{
BindGridViewUploadedItemNoCommitment();
}
}
}
}
private void BindDropDownListYear()
{
MTConfig mtConfig = new MTConfig();
DataTable mtCreatedYear = new DataTable();
mtCreatedYear = mtConfig.getMtCreatedYear();
if (mtCreatedYear == null)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "alertFailProcessDeptBind", "alert('Failed to get " + ConfigurationManager.AppSettings["systemNameShortFormWithoutE"].Trim() + " created year.\\nPlease contact MIS.\\nContact info. at the bottom of the page.');", true);
}
else
{
DropDownListYear.DataSource = mtCreatedYear;
DropDownListYear.DataMember = "MtCreatedYear";
DropDownListYear.DataValueField = "MtCreatedYear";
DropDownListYear.SelectedIndex = 0;
DropDownListYear.DataBind();
}
}
Но мой источник данных объекта выполняет выбор до того, как выпадающий список заполнится данными. SelectedValue
ниже пусто при первом выборе.
protected void objectDataSourceUploadedItemWithoutCommitment_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
try
{
e.InputParameters["CreatedYear"] = Convert.ToInt32(DropDownListYear.SelectedValue.ToString());
}
catch (Exception ex)
{
LogHandler.LogError(logger, ex);
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "Error occurred during objectDataSourceUploadedItemWithoutCommitment_Selecting!", true);
}
}
Можно ли изменить порядок objectDataSourceUploadedItemWithoutCommitment_Selecting
а также Page_Load
?
Как еще я могу иметь дело с этим, кроме DropDownListYear.Items.Insert(0, new ListItem("Please select year", "0"))
заставить пользователя выбрать год?
1 ответ
Вы можете сделать это на лицевой стороне, используя AppendDataBoundItems="True"
имущество:
<asp:DropDownList ID="DropDownListYear" AppendDataBoundItems="True" runat="server" >
<asp:ListItem>Please select year</asp:ListItem>
</asp:DropDownList>
Это автоматически добавит первый элемент с вашими другими элементами, заполненными из DataSource.