DropDownList asp.net中所选项目的文本

在页面加载中,我填充下拉列表,如下所示:

protected void Page_Load(object sender, EventArgs e) { string buildingTypeSoldier = "soldier"; var soldierBuilding = from b in dc.Buildings where b.buildingtype == buildingTypeSoldier select b.buildingname; ddlSoldierBuildings.DataSource =soldierBuilding; ddlSoldierBuildings.DataBind(); } 

但是当我尝试将同一页面上的标签文本设置为selectetitem.text时,我只获得列表中的第一项,而不是我选择的项目。 我尝试使用这样的按钮设置文本:

 protected void btnBuySoldierBuilding_Click(object sender, EventArgs e) { lblTestlabel.Text = ddlSoldierBuildings.SelectedItem.Text; } 

下拉列表包含从我的数据库中获取的树项目,营房,射手范围和稳定。 单击按钮时页面加载是否覆盖我的选择? 我怎么解决这个问题?

那是因为您的Page_Load在事件处理程序之前触发。

Page_Load初始化逻辑包装在if块中,通过检查Page.IsPostback属性来检查页面是否正在处理回发。 如果它是回发,那么您的初始化逻辑将不会触发并重置您的下拉列表。

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostback){ string buildingTypeSoldier = "soldier"; var soldierBuilding = from b in dc.Buildings where b.buildingtype == buildingTypeSoldier select b.buildingname; ddlSoldierBuildings.DataSource =soldierBuilding; ddlSoldierBuildings.DataBind(); } } 

将上面的绑定代码包装在if (!Page.IsPostBack) { }块中。 否则你将失去控制状态。