在asp.net中选择项目下拉列表中的文本

3
在页面加载时,我会像这样填充下拉列表:
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();
    }

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

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

下拉列表包含三个项目:兵营、射手范围和马厩,这些项目来自我的数据库。当我单击按钮时,页面加载会覆盖我的选择吗?我该如何解决这个问题?

2个回答

3
那是因为你的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();
       }
    }

太好了,这个可行。非常感谢您如此快速的回答! - Twistar

2

将上面的绑定代码放在一个 if (!Page.IsPostBack) { } 块中。否则,您将失去控件状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接