C# 数据转发器中的文本框变为不可见,在滚动期间不会保留其视图
我使用C# 数据转发器中的文本框变为不可见,在滚动期间不会保留其视图,c#,data-binding,datarepeater,C#,Data Binding,Datarepeater,我使用DataRepeater创建了一个表单,并且我有一个XML文件,可以反序列化到一个类中。然后,我创建了一个数据集来表示该类。我将数据集绑定到我的数据转发器。我还创建了一些标签和文本框,并将它们绑定到数据集中的适当数据 以下是代码: TagLabel.DataBindings.Add("Text", ds, "Tag"); PrecedenceLabel.DataBindings.Add("Text", ds, "Precedence"); DataTypeLabel.DataBin
DataRepeater
创建了一个表单,并且我有一个XML文件,可以反序列化到一个类中。然后,我创建了一个数据集
来表示该类。我将数据集
绑定到我的数据转发器
。我还创建了一些标签和文本框,并将它们绑定到数据集中的适当数据
以下是代码:
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";
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;
}
}
在此之后,我想隐藏ValueTextbox
,如果它是DataTypeLebel
是“自动输入”
。以下是代码:
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";
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;
}
}
for(int i=0;i
在我完成这项工作并运行项目之后,在本例中,根据我的XML文件,我希望只有数据中继器第5行的ValueTextBox
被隐藏。但是,当我滚动表单时。我可以看到其他一些行显示不可见的VallueTextBox
。更糟糕的是,当我上下滚动时,隐藏的文本框无处不在。有人能告诉我我做错了什么吗
我还尝试了虚拟模式,并根据事件处理程序中的条件更新控件,使textbox不可见。DataerRepeater\u ItemValueRequired,同样的问题也会出现。如果在条件语句中设置属性,例如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;
}