【问题标题】:Finding state of controls in a ListView在 ListView 中查找控件的状态
【发布时间】:2009-08-27 10:06:06
【问题描述】:

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

我首先尝试的是向按钮添加 onclick 事件并围绕 listview.items 循环并检查复选框控件的“已选中”状态,但是,即使他们已勾选该项目,这始终返回“false” .

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

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

谢谢 拉吉。

【问题讨论】:

    标签: c# asp.net listview


    【解决方案1】:

    我使用具有相同功能的 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 更新隐藏字段

    【讨论】:

      【解决方案2】:

      在您的Button_Click 事件之前,您的listview 上必须调用DataBind() 函数;最有可能出现在page_load 事件中。如果您已将数据绑定在page_load 事件中;让它进入 if (!Page.IsPostBack) 块;

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2013-01-31
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多