在ListView中查找控件的状态

时间:2009-08-27 10:06:07

标签: c# asp.net listview

我有一个绑定到数据源的列表视图,每行都有一个复选框控件,我想要实现的是当我按下一个按钮时,我想检查列表视图中的所有复选框并检查是否有任何他们已被勾选。

我首先尝试的是将一个onclick事件添加到一个按钮并循环遍历listview.items并检查复选框控件的“已检查”状态,但是,即使他们勾选了该项目,它也总是返回“false”

我能让它工作的唯一方法是,如果我循环onItemDataBound事件中的所有listview项目,但这似乎是最有效的方式,因为它将为listview中的每个项目调用onItemDataaBound,(因此每次在listview.items上调用foreach)

然后我尝试在OnDateBound事件上做同样的事情,因为这只被调用一次,但我遇到了同样的问题,它看到复选框“已检查”字段一直是假,我想知道是否有人可以点我正确地朝着正确的方向去做。

感谢 拉吉。

2 个答案:

答案 0 :(得分:0)

我使用具有相同功能的gridview。我在gridview之外放了一个onclick事件按钮。

在我背后的代码中我有这样的东西:

foreach (GridViewRow gridViewRow in GridAvailableUsers.Rows)
            {
                // only add selected topics.
                CheckBox selCheckBox = (CheckBox)gridViewRow.Cells[3].Controls[1];
                if (selCheckBox.Checked)
                {
// do something
                }
            }

这将循环遍历所有行。如果您不想要这样的东西,那么您可能需要使用javascript解决方案。选中复选框来捕获所有行并使用行ID

更新隐藏字段

答案 1 :(得分:0)

DataBind() k事件之前listview必须有Button_Clic个函数;最有可能出现在page_load事件中。如果您在page_load事件中绑定了数据;如果(!Page.IsPostBack)阻止;

希望这会有所帮助。