繁体   English   中英

ASP.NET访问转发器内部文本框的值

[英]ASP.NET accessing value of the textboxes inside of the repeater

我想检查转发器内的文本框的值。 如果所有文本框都是空的,我想将检查值分配给0.我尝试了这个实现但是我得到了这个错误System.InvalidCastException

            int check = 0;

            foreach (TextBox tb in searchResultRepeater.Items)
            {
             if(tb.Text == ""){
                check = 0;
             }else{
                check = 1;
             }
            }

我该如何解决这个异常?

这意味着并非Items集合中的所有对象都是TextBox的实例。 您需要使用定义为更通用的对象的tb运行循环,然后检查循环内部是否tb是TextBox

 foreach(RepeaterItem item in searchResultRepeater.Items){
    for (int i = 0; i < item.Controls.Count; i++) {
        Control ctrl = item.Controls[i];    
        if(ctrl is TextBox){
           TextBox tb = (TextBox) ctrl;
           if (tb.Text != null && tb.Text.Length > 0) {
                        check = 1;
                        break;
           }
        }
   }
   if (check == 1)
       break;
 }

如果您的searchResultRepeter是一个Repeater,而不是通过TextBoxes循环,那么您应该使用RepeaterItem。 您可以检查所有项目是否都是TextBox类型。

    foreach(RepeaterItem item in searchResultRepeater.Items){
        if(item.Controls.Count > 0 && item.Controls[0] is ITextControl ) {
           if(((TextBox)item.Controls[0]).Text.IsNullOrEmpty()){
                check = 1;
                break;
       }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM