gpt4 book ai didi

c# - ASP.NET DropDownList 错误 -- SelectedItem/Value 从不更新

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:13 24 4
gpt4 key购买 nike

编辑:已解决。在未检查页面的 PostBack 状态时,尝试将 DataTable 绑定(bind)到 DDL 时意外发生了两次。一旦删除了多余的绑定(bind)尝试,问题就消失了。感谢大家的帮助。

我有一个 aspx 页面和一些背后的代码,其中包含一个下拉列表 (ddlLocationState) 或按字母顺序排列的美国各州。但是,无论选择什么项目,如果我执行 ddlLocationState.SelectedItem/Value/Index,它始终是“阿拉斯加”和“0”。每一次。即使在 SelectedIndexChange 事件处理程序中。

这是在 aspx 页面中声明 DDL 的位置(这是页面中对它的唯一引用):

<tr>
<td>&nbsp;</td>
<td class="textBlue"><label>State: </label></td>
<td>
<asp:DropDownList runat="server" ID="ddlLocationState" style="width: 250px;"/>
</td>
</tr>

这是设置 DDL 内容的代码:私有(private)无效 BindStates()

  private void BindDDL()
{
//Get all state info:
// Populate a DataTable called "sdt" with two columns, name (a state)
// and "id" (a number from 0 to 49)

//Bind the DataTable "sdt":
this.ddlLocationState.DataSource = sdt;
this.ddlLocationState.DataTextField = "name";
this.ddlLocationState.DataValueField = "id";
this.ddlLocationState.DataBind();
}

下面是一些试图获取当前选定值的代码隐藏:

private void ddlLocationState_SelectedIndexChanged(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("on index changed: " + dlLocationState.SelectedItem.Value.ToString());
}

这里是调用 BindDDL 的地方:

protected void Page_Load(object sender, EventArgs e)
{
this.pnlLocationMaintenance.Visible = false;
this.LocationSortDirection = "asc";
this.LocationSortField = "address";
this.BindStates();
this.dgLocations.CurrentPageIndex = 0;
this.BindLocations();

if (!Page.IsPostBack)
{
BindDDL();
}
ddlLocationState.SelectedIndexChanged += new EventHandler(ddlLocationState_SelectedIndexChanged);
}

为什么 ddlLocationState.SelectedItem/Value/Index 总是相同,即使在选定的索引更改事件处理程序中也是如此?

最佳答案

如果您在 page_load 上进行数据绑定(bind)而不检查您是否处于回发状态,就会发生这种情况。根据您描述的症状,我假设这就是正在发生的事情。

在您的 PageLoad(...) 方法中,您需要:如果 (!Page.IsPostBack){ 绑定(bind)DDL();

关于c# - ASP.NET DropDownList 错误 -- SelectedItem/Value 从不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com