Раскрывающийся список привязки в шаблоне элемента редактирования вида сетки - PullRequest
1 голос
/ 07 марта 2009

я могу связать выпадающий список в шаблоне редактирования элемента. Выпадающий список имеет нулевые значения.

protected void grdDevelopment_RowDataBound(object sender, GridViewRowEventArgs e) 
{   
  DropDownList drpBuildServers = new DropDownList();

  if (grdDevelopment.EditIndex == e.Row.RowIndex)    
  {        
      drpBuildServers = (DropDownList)e.Row.Cells[0].FindControl("ddlBuildServers");    
  }
}

также получаю ошибку

Не удалось загрузить viewstate. Дерево управления, в которое загружается состояние просмотра, должно соответствовать дереву управления, которое использовалось для сохранения состояния просмотра во время предыдущего запроса. Например, при динамическом добавлении элементов управления элементы управления, добавленные во время обратной передачи, должны соответствовать типу и положению элементов управления, добавленных во время первоначального запроса.

Ответы [ 4 ]

1 голос
/ 04 июля 2011

попробуйте http://www.codeproject.com/KB/webforms/editable_gridview_control.aspx, это может быть полезно

1 голос
/ 07 марта 2009
protected void grdDevelopment_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DropDownList drpBuildServers;

        drpBuildServers = e.Row.FindControl("ddlBuildServers") as DropDownList;

        if (drpBuildServers != null)
            // Write your code here            
    }
}
1 голос
/ 07 марта 2009

У меня были проблемы с контролем поиска, в конце я использовал небольшую рекурсию, чтобы найти элемент управления:

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; 
}

Затем, чтобы найти свой контроль, сделайте этот звонок:

drpBuildServers = (DropDownList) FindControlRecursive(e.Row.Cells[0], "ddlBuildServers");
0 голосов
/ 19 января 2011

Это решение для меня:

protected void grdDevelopment_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        DropDownList drpBuildServers;

        drpBuildServers = e.Row.FindControl("ddlBuildServers") as DropDownList;

        if (drpBuildServers != null)
            // Write your code here            
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...