我使用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
。但是,当我滚动表单时。我可以看到其他一些行显示不可见的VallueTextBox
。当我向上和向下滚动并且隐藏的文本框都在哪里时,情况会更糟。任何人都可以建议我做错了吗?
我还尝试过虚拟模式并根据事件处理程序dataeRepeater_itemValueNeeded
中的条件更新控件并使文本框不可见,并出现同样的问题。
答案 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;
}