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

时间:2012-03-27 12:57:21

标签: c# asp.net drop-down-menu pageload

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

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;
    }

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

2 个答案:

答案 0 :(得分:3)

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

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

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();
       }
    }

答案 1 :(得分:2)

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