【问题标题】:List control data filter asp.net列表控制数据过滤asp.net
【发布时间】:2011-02-28 21:11:48
【问题描述】:

我有一个列表控件。我有来自对象的数据。该对象中有一个名为 status id 的字段。

我有一个下拉框。下拉列表包含一个状态 ID 字段。

最初所有数据都被填充。

当我通过在下拉列表中选择一个选项来单击过滤器时,我希望我的列表加载的状态字段等于下拉列表中的选择值。

在页面加载中,我使用 foreach 来填充列表控件。我在哪里将过滤器语句放在下拉代码中。我应该把它放在 if(!ispostback) 中还是在回发之外。

因为每次我从下拉列表中选择值时,列表都会填充默认值。

请帮帮我。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    根据我从您的描述中了解到,如果您将过滤代码放在页面加载事件中,那么:

    • 如果它在 if (!Page.IsPostBack) { } 块内,那么它只会在第一次呈现页面时执行 - 但您希望最初拥有所有数据并稍后过滤从下拉列表中选择一个选项;

    • 如果它在此块之外,这是不对的,因为它会在页面上的任何控件导致回发时执行,而不仅仅是当您想通过从下拉列表中选择一个选项进行过滤时。

    尝试使用类似的东西:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            // executed only first time
            // load data for both list control and drop down
        }        
    }
    
    protected void DropDownList_SelectedIndexChanged(object sender, EventArgs e)
    {
        // filter the data
        // (or clear the items in the list control and fetch new data for the list 
        // control based on the status id selected in the drop down and rebind it)
    }
    

    不要忘记为下拉控件设置 AutoPostBack="True" 否则 SelectedIndexChanged 事件不会导致回发,并且在您更改选择时不会过滤您的数据(就在其他一些控件导致回发之后) .

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多