我想检查转发器内的文本框值。如果所有文本框都为空,我想将检查值分配给0.我尝试了这个实现,但是我收到了这个错误System.InvalidCastException
int check = 0;
foreach (TextBox tb in searchResultRepeater.Items)
{
if(tb.Text == ""){
check = 0;
}else{
check = 1;
}
}
如何修复此异常?
答案 0 :(得分: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;
}
答案 1 :(得分:1)
如果您的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;
}
}