【问题标题】:How do I get the contents of a label, if a checkbox is selected?如果选中了复选框,如何获取标签的内容?
【发布时间】:2012-02-25 05:45:32
【问题描述】:

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

我到目前为止的代码包括在下面。代码运行,但从未发现复选框的选中状态被选中。我检查了 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);
            }
        }

【问题讨论】:

  • 您要多次查找名为“IsAlumni”的单个控件?
  • 如果您查看 Request.Forms,那里有标签吗?复选框只有在被选中时才会提交。
  • 能否展示一下你的.aspx页面的相关代码?
  • 你在检查这个 if(!(Page.IsPostback))

标签: asp.net listview checkbox webforms label


【解决方案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;

【讨论】:

  • 标签不只是呈现为跨度,因为它们不是像文本框这样的输入控件吗?根据我的经验,在回发时,您永远不会从标签中获得价值。您必须将文本加载到文本框中,然后执行 var myTxt = (TextBox)x.FindControl("txtContactID");
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 2018-02-13
相关资源
最近更新 更多