我有一个问题,我只能知道它为什么会发生
情况是我有两个下拉列表,两者都以相同的方式设置
<asp:DropDownList ID="DocumentLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DocumentLink_Changed">
</asp:DropDownList>
<asp:DropDownList ID="PageLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="PageLink_Changed">
</asp:DropDownList>
他们的活动看起来像这样
protected void DocumentLink_Changed(object sender, EventArgs e)
{
DropDownList DocumentLink = sender as DropDownList;
LinkParam = DocumentLink.SelectedValue.ToString();
DescriptionParam = DocumentLink.SelectedItem.Text;
}
protected void PageLink_Changed(object sender, EventArgs e)
{
DropDownList PageLink = sender as DropDownList;
LinkParam = PageLink.SelectedValue.ToString();
DescriptionParam = PageLink.SelectedItem.Text;
}
在名为“PageLink”的DropDown的情况下,事件处理程序触发 . 但是对于“DocumentLink”,事件处理程序不会 . 在调试中,我看到页面加载被触发但事件在页面加载后下降,并且从不进入DocumentLink_Changed
作为一个兴趣点,如果我使用telerik radComboBox代替DropDownList使用相同的设置,它确实有效 .
<telerik:RadComboBox ID="DocumentLink" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DocumentLink_Changed">
</telerik:RadComboBox>
像这样的事件处理程序
protected void DocumentLink_Changed(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
不幸的是,我需要在我的项目中使用Dropdownlists .
可能是什么导致了这个?
UPDATE
我已经使用了工作下拉列表,并使用LINQ绑定作为无效的下拉列表 . 结果是,PageLink下拉列表开始表现得像'DocumentLink'下拉列表 . 这让我相信问题可能在绑定方法中,但它们两者非常相似,我确实在下拉列表中看到了结果
这是我的约束力
if (selectedValue == 3)
{
DropDownList select = lvLinks.InsertItem.FindControl("PageLink") as DropDownList;
List<IPW_Links_get_document_listResult> getList = (from i in lqContext.IPW_Links_get_document_list(0, "my stuff") select i).ToList();
select.DataSource = getList;
select.DataTextField = "DocumentName";
select.DataValueField = "FolderPath";
select.DataBind();
}
if (selectedValue == 2)
{
DropDownList select = lvLinks.InsertItem.FindControl("PageLink") as DropDownList;
List<IPW_Links_get_available_pagesResult> getList = (from i in lqContext.IPW_Links_get_available_pages(PortalId) select i).ToList();
select.DataSource = getList;
select.DataTextField = "TabName";
select.DataValueField = "TabPath";
select.DataBind();
}
1 回答
检查PageLoad事件中是否有任何改变下拉列表的语句 . 如果页面加载事件中有数据绑定语句或选择重置语句,请确保它位于if not ispostback条件片段下 .