0

我已经创建了一个表单,DataRepeater并且我有一个反序列化为类的 XML 文件。然后我创建了一个dataset代表班级。我将 绑定dataset到我的DataRepeater. 我还创建了一些标签和文本框,并将它们绑定到我的数据集中的适当数据。

以下是代码:

 TagLabel.DataBindings.Add("Text", ds, "Tag");
 PrecedenceLabel.DataBindings.Add("Text", ds, "Precedence"); 
 DataTypeLabel.DataBindings.Add("Text", ds, "DataType");           
 LengthLabel.DataBindings.Add("Text", ds, "Length");           
 ValueTextBox.DataBindings.Add("Text", ds, "Value");           
 MaxTextBox.DataBindings.Add("Text", ds, "Maximum");           
 MinTextBox.DataBindings.Add("Text", ds, "Minimum");           
 OverflowTextBox.DataBindings.Add("Text", ds,"OverflowBehaviour");

 bindingsource.DataSource = ds;
 dataRepeater.DataSource = bindingsource;
 dataRepeater.DataMember = "Preference";

ValueTextbox在此之后,如果它DataTypeLebel是,我想隐藏它"Autoinrement"。以下是代码:

for (int i = 0; i < dataRepeater.ItemCount; i++)            
{          
dataRepeater.CurrentItemIndex = i;

 if (((Label)dataRepeater.CurrentItem.Controls["DataTypeLabel"]).Text == "AutoIncrement")                
 {                    
 ((TextBox)dataRepeater.CurrentItem.Controls["ValueTextBox"]).Visible = false;           
 }    
 }

完成此操作并运行项目后,在这种情况下,根据我的 XML 文件,我希望只有数据中继器第 5 行ValueTextBox隐藏。但是,当我滚动表格时。我可以看到其他一些行显示 invisible VallueTextBox。当我上下滚动并且隐藏的文本框无处不在时,情况更糟。谁能建议我做错了什么?

我还尝试了虚拟模式并根据事件处理程序中的条件更新控件并使文本框不可见,dataeRepeater_itemValueNeeded并且发生了同样的问题。

4

1 回答 1

0

如果在 If...Then 等条件语句中设置属性,则还必须使用 Else 子句指定不满足条件时的外观。试试这个:

if (((Label)dataRepeater.CurrentItem.Controls["DataTypeLabel"]).Text    == "AutoIncrement")                  
{                      

 ((TextBox)dataRepeater.CurrentItem.Controls["ValueTextBox"]).Visible = false;             

}      

else
{
 ((TextBox)dataRepeater.CurrentItem.Controls["ValueTextBox"]).Visible = true;         
}
于 2012-10-09T13:25:09.927 回答