提问人:Livio 提问时间:11/9/2023 最后编辑:LarsTechLivio 更新时间:11/10/2023 访问量:56
如何访问DataRepeater内部的控件?
How to access controls inside DataRepeater?
问:
我正在尝试从 C# 中的 DataRepeater 控件中获取值 旧程序(用 VB 编写)使用以下指令执行此操作:
If CBool(e.DataRepeaterItem.Controls(Temp_S.Name).Text) = True Then
e.DataRepeaterItem.Controls(T_S.Name).Text = "S"
e.DataRepeaterItem.Controls(T_S.Name).BackColor = Color.Yellow
e.DataRepeaterItem.Controls(T_S.Name).ForeColor = Color.Black
Else
e.DataRepeaterItem.Controls(T_S.Name).BackColor = Color.White
e.DataRepeaterItem.Controls(T_S.Name).ForeColor = Color.White
End If
我尝试在 C# 中使用相同的指令,但没有结果。 出现的错误是:
“不可调用的成员'Control.controls'不能像方法一样使用。”
编辑: 我找到了一个解决方案,但即使它没有产生错误,它仍然不起作用,而且非常奇怪的是,如果我在潜艇内放置一个停止点进行检查,则永远不会达到该点!看来这个潜艇从未被触及过!
private void DataRepeater_Buoni_DrawItem(object sender, Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
{
// Accende S
if (Convert.ToBoolean(e.DataRepeaterItem.Controls["t_Buono.Name"].Text = "10268"))
{
e.DataRepeaterItem.Controls["t_S.Name"].Text = "S";
e.DataRepeaterItem.Controls["t_S.Name"].BackColor = Color.Yellow;
e.DataRepeaterItem.Controls["t_S.Name"].ForeColor = Color.Black;
}
else
{
e.DataRepeaterItem.Controls[t_S.Name].BackColor = Color.White;
e.DataRepeaterItem.Controls[t_S.Name].ForeColor = Color.White;
}
}
答:
2赞
Amit Mohanty
11/9/2023
#1
试试这个:(e.DataRepeaterItem.Controls[Temp_S.Name] as Control).Text
修改代码:
// Change TextBox to the actual type of your control
var control = e.DataRepeaterItem.Controls[Temp_S.Name] as TextBox;
if (control != null)
{
string textValue = control.Text;
}
评论
0赞
Livio
11/9/2023
不幸的是,它不起作用!
0赞
Amit Mohanty
11/9/2023
试试修改后的那个。
0赞
Livio
11/10/2023
#2
终于成功了!!!!
if (e.DataRepeaterItem.Controls["temp_S"].Text == "True")
问题是.名称与文本框名称联接。 感谢大家的支持!
评论
It appears like this sub is never reached
那将是一个不同的问题。DrawItem
Sub DataRepeater1_DrawItem(sender As Object, e As DataRepeaterItemEventArgs) Handles DataRepeater1.DrawItem