ASP .NET - 基于NewEditIndex从Listview中检索值

时间:2009-10-02 17:57:24

标签: asp.net listview

使用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"));

3 个答案:

答案 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属性而不是控件本身。