使用ASP.NET 3.5 ListView控件。
我想从当前编辑的ListView行中捕获我的表id的值。
已将ListEditing事件添加到ListView中。 此事件中唯一可用的值是e.NewItemIndex。 如果正在编辑ListView的当前页面的第一行,则返回0。
如何将此0转换为实际的表ID(标签控制值)?
我试过了:
table_id = Convert.ToString(ListView1.Items[e.NewEditIndex].FindControl("table_idLabel1"));
答案 0 :(得分:1)
您可以使用DataKeyNames属性而不是标签吗?将属性设置为数据库字段的名称,该字段是表的键,然后执行以下操作:
table_id = ListView1.DataKeys[e.NewEditIndex].Value.ToString();
答案 1 :(得分:0)
使用FindControlRecursive(来自Recursive Page.FindControl)。 FindControl的问题在于它只搜索一层深层。
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
答案 2 :(得分:0)
您确定table_idLabel1
是正确的ID吗?
此外,您可能需要像Chris的回答一样递归查看。另外,看起来您将控件转换为字符串。您可能想要ID属性而不是控件本身。