【问题标题】:How to find a DropDownList in a GridView ItemTemplate without RowDataBound?如何在没有 RowDataBound 的 GridView ItemTemplate 中找到 DropDownList?
【发布时间】:2012-06-08 19:17:17
【问题描述】:

我在 GridView 之外有一个 DropDownList,在 GridView 的 ItemTemplate 中有一个 DropDownList。外部的 DropDownList 有一个 SelectedIndex_Changed 事件,当该事件触发时,它应该填充 GridView 内的 DropDownList。问题是在我用来填充内部 DropDownList 的方法中,它找不到控件:这是更改外部 DropDownList 时调用的示例代码:

 //Does not find ddlRoom
 DropDownList ddlRoom = (DropDownList)gv.TemplateControl.FindControl("ddlRoom");
    if (rows.Count() > 0)
    {

        var rooms = rows.CopyToDataTable();
        ddlRoom.Items.Clear();
        ddlRoom.Items.Add(new ListItem("Select...", "-1"));
        ddlRoom.DataSource = rooms;
        ddlRoom.DataBind();
    }

我也试过了:

DropDownList ddlRoom = (DropDownList)gv.FindControl("ddlRoom");

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您需要为每一行绑定下拉菜单。试试这样的

    DropDownList ddlRoom = null;
    foreach(var gridRow in gv.Rows)
    {
        ddlRoom = gridRow.FindControl("ddlRoom") as DropDownList;
        if (ddlRoom != null)
        {
            //your code here
        }
    } 
    

    【讨论】:

    • 这行得通。谢谢。不过,我真的希望避免使用 foreach。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多