2012-02-24 45 views
1

我有一个列表视图与多列。其中一列是复选框,另一列是标签。还有其他的栏目,但它们与这个问题并不相关。在此页面上按钮的点击事件中,如果选中与其相邻的复选框,我想读取该标签的值。我如何阅读标签内容?如果选中复选框,我如何获取标签的内容?

我到目前为止的代码包含在下面。该代码运行,但复选框的检查状态从未被发现被检查。我检查了itemTemplate以确认名称,并确保此问题不是由于拼写错误造成的。

 CheckBox chkSelected; 
     List<int> selectedIds = new List<int>(); 


     foreach (var x in lvPeople.Items) 
     { 
      chkSelected = (CheckBox)x.FindControl("IsAlumni"); 

      if (chkSelected.Checked) 
      { 
       int id = (int)lvPeople.DataKeys[x.DisplayIndex].Value;      

       selectedIds.Add(id); 
      } 
     } 
+0

什么是你的标签的ID? – 2012-02-24 21:21:09

+0

您正在寻找一个名为“IsAlumni”的单一控件多次? – atoMerz 2012-02-24 21:21:50

+0

@Leniel - lblContactId – Joe 2012-02-24 21:22:31

回答

1

你会是这样的:

foreach (var x in lvPeople.Items) 
{ 
    chkSelected = (CheckBox)x.FindControl("IsAlumni"); 

    if (chkSelected.Checked) 
    { 
     int id = (int)lvPeople.DataKeys[x.DisplayIndex].Value; 

     var myLabel = (Label)x.FindControl("lblContactId"); 
     var myLabelContent = myLabel.Text;     

     selectedIds.Add(id); 
    } 
} 

例如,在所选择的项目的事件,你可以有这样的代码:

CheckBox chkSelected = 
      lvPeople.Items(lvPeople.SelectedIndex).FindControl("IsAlumni") as CheckBox; 
+0

不是标签只是呈现为跨度,因为它们不是输入控件像一个文本框?根据我的经验,在回发中,您永远不会从标签中获得价值。您必须将文本加载到文本框中,然后执行var myTxt =(TextBox)x.FindControl(“txtContactID”); – paparush 2012-02-25 04:02:46

相关问题