首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中继器内文本框的ASP.NET访问值

问中继器内文本框的ASP.NET访问值
EN

Stack Overflow用户
提问于 2014-05-24 21:32:56
回答 2查看 1.1K关注 0票数 0

我想检查中继器内文本框的值。如果所有文本框都是空的,我希望将复选值赋值为0。我尝试了这个实现,但是我得到了错误System.InvalidCastException

代码语言:javascript
复制
            int check = 0;

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

我怎样才能修正这个异常?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-24 21:38:49

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

代码语言:javascript
复制
 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;
 }
票数 1
EN

Stack Overflow用户

发布于 2014-05-24 21:43:40

如果您的searchResultRepeter是一个复述器,而不是循环TextBoxes,那么您应该使用RepeaterItem。您可以检查您的所有项目是否完全属于TextBox类型。

代码语言:javascript
复制
    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;
       }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23849843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档