数据转发器中的文本框变为不可见在滚动期间不保持其视图

时间:2012-10-05 14:25:45

标签: c# data-binding datarepeater

我使用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";

在此之后,如果ValueTextboxDataTypeLebel,我想隐藏"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。但是,当我滚动表单时。我可以看到其他一些行显示不可见的VallueTextBox。当我向上和向下滚动并且隐藏的文本框都在哪里时,情况会更糟。任何人都可以建议我做错了吗?

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

1 个答案:

答案 0 :(得分: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;         
}