我很难弄清楚这一点,我希望你们能帮助我。
我有一个名为 a 的页面Index.aspx
,DropDownList
它是一个单独的UserControl
类(因为它将在其他页面中使用)。这是代码:
UcSelecionarLocal.ascx:
<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="UcSelecionarLocal.ascx.cs"
Inherits="QuickMassage.uc.UcSelecionarLocal" %>
<asp:DropDownList ID="ddlLocais" runat="server"
CssClass="span4 dropdown-toggle" AutoPostBack="true">
</asp:DropDownList>
UcSelecionarLocal.ascx.cs:
public partial class UcSelecionarLocal : UserControl {
protected void Page_Load(object sender, EventArgs e) {
if (!this.IsPostBack) {
PreencherLocais();
}
}
private void PreencherLocais() {
ddlLocais.Items.Clear();
ddlLocais.Items.Add(new ListItem("Selecione", "0"));
ControleLocal controle = new ControleLocal();
DataTable tab = controle.ListarLocais();
foreach (DataRow row in tab.Rows) {
ddlLocais.Items.Add(new ListItem(row["Descricao"].ToString(),
row["ID"].ToString()));
}
}
}
此控件已正确放置Index.aspx
并加载其值。包含它的表单将操作设置为agendamentos.aspx
。当我更改 时ddlist
,该页面将按原样提交到表单操作页面。
在另一页上,问题开始了:我将参数发布到此页面,其中一个是ddlist
值。在即时窗口中,我检查了该值,它就在那里,假设它是 1。
长话短说,我有这个代码:
议程.aspx.cs:
protected void Page_Load(object sender, EventArgs e) {
DropDownList locais = ObterComponenteListaLocais();
try {
locais.SelectedIndex =
int.Parse(HttpContext.Current.Request["ucSelLocal$ddlLocais"]);
}
在调试时,我看到它locais.SelectedIndex
是-1。分配后它保持-1。页面加载,然后我ddlist
再次将值更改为 2。在调试上面的相同代码时,我看到locais.SelectedIndex
现在是 1。同样,将它设置为 2,就像通常那样,不会产生任何效果。如果我将ddlist
再次更改为 3,则SelectedIndex
变为 2 并且不采用值 3。
换句话说:新加载的页面中索引的值是之前加载的页面的值。
你们能帮帮我吗?