我已经创建了一个表单,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
并且发生了同样的问题。