1

我是 asp.net 的新手,并试图将值从 Sqlserver 提取到 listView (asp.net) 中。在代码隐藏中,如果选中 rowY 中的复选框,我想遍历所有行并拉取 columnX 的单元格值。我在以下代码中遇到编译错误,但无法找出问题所在。我可以从 GridView 但不能从 ListView 获取单元格值。

while (i < WOListView.Items.Count) {
  CheckBox cbCell = (CheckBox)WOListView.Items[i].FindControl("CheckBox1");
  if (cbCell.Checked) {
      if (WOListView.Items[i].SubItems[1].Text == "WO") {
        do stuff...
      }
  }
}

以及由此产生的错误代码:

CS1061:“System.Web.UI.WebControls.ListViewDataItem”不包含“SubItems”的定义,并且找不到接受“System.Web.UI.WebControls.ListViewDataItem”类型的第一个参数的扩展方法“SubItems”

有不同的方法吗?不支持子项吗?

4

2 回答 2

1

列表视图中没有子项目。如果我没记错的话,您正在寻找列表视图中的控件

while (i < WOListView.Items.Count) {
  CheckBox cbCell = (CheckBox)WOListView.Items[i].FindControl("CheckBox1");
  if (cbCell.Checked) {
      Label somelabel = (Label)WOListView.Items[i].FindControl(“someLabel”);
      //if (WOListView.Items[i].SubItems[1].Text == "WO") {
       if (somelabel.Text == "WO") {
        do stuff...
      }
  }
} 
于 2012-06-15T18:13:02.770 回答
0

不支持子项??

不,这就是您收到编译错误的原因。

在我看来,您可能正在寻找这样的东西:

while (i < WOListView.Items.Count) {
  CheckBox cbCell = (CheckBox)WOListView.Items[i].FindControl("CheckBox1");
  if (cbCell.Checked) {
      if ((WOListView.Items[i].Controls[1] as Label).Text == "WO") {
        do stuff...
      }
  }
}

注意as Label. 假设您正在尝试检查 ListView 行中的 Label 控件是否具有文本“WO”。这很可能是一种不同类型的控制。

于 2012-06-15T18:05:46.927 回答