数据绑定Asp .Net下拉列表SelectedValue到页面属性

时间:2013-09-20 12:38:35

标签: asp.net vb.net webforms code-behind

我的页面中有一个属性

Public Property Status as String 

我通过调用

手动设置状态列表
list.Items.Add(New ListItem("Open", "Open"))

然后我打电话

list.DataBind()

在我的页面上,我想将所选值设置为该属性中的值,并且我希望该属性中的值包含每个帖子上的列表值。

我尝试SelectedValue='<%# Bind("Status") %>',但收到以下错误:

  

数据绑定方法,如Eval(),XPath()和Bind()只能是   在数据绑定控件的上下文中使用。

我有什么遗失的吗?最终目标是将DropDownList的状态持久保存到post backs之间的Page属性。

谢谢。

2 个答案:

答案 0 :(得分:0)

服务器控件具有viewstate,只要您不将控件的viewstate属性设置为false,就会自动在回发之间保留控件的值。

第二件事是你不需要在你的情况下将它称为DataBind()函数。

答案 1 :(得分:0)

您可以按

获取所选的下拉列表值
status=DropDownList1.SelectedItem.Value.ToString();

为了在每次回发后获得所选值,您需要在下拉列表onselectedindexchanged="DropDownList1_SelectedIndexChanged"中添加事件,在这种情况下,您可以按如下方式获取所选值。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            status=DropDownList1.SelectedItem.Value.ToString();
        }

您可以通过创建视图状态来保持status属性的值,如下所示(在c#中)

public string status
        {

     get
            {
                if (ViewState["status"] != null)
                    return ViewState["status"].ToString();
                else
                    return null;
            }
            set
            {
                ViewState["status"] = value;
            }

        }