Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# gridview编辑项模板中的绑定下拉列表_C#_.net_Asp.net_Gridview - Fatal编程技术网

C# gridview编辑项模板中的绑定下拉列表

C# gridview编辑项模板中的绑定下拉列表,c#,.net,asp.net,gridview,C#,.net,Asp.net,Gridview,我可以在编辑项模板中绑定dropdownlist。下拉列表具有空值 protected void grdDevelopment_RowDataBound(object sender, GridViewRowEventArgs e) { DropDownList drpBuildServers = new DropDownList(); if (grdDevelopment.EditIndex == e.Row.RowIndex) { dr

我可以在编辑项模板中绑定dropdownlist。下拉列表具有空值

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。正在加载viewstate的控件树必须与上次请求期间用于保存viewstate的控件树匹配。例如,动态添加控件时,回发期间添加的控件必须与初始请求期间添加的控件的类型和位置匹配

我在查找控件时遇到问题,最后我使用了一点递归来查找控件:

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");
这对我来说是一个解决方案:

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

试试看,这可能会有帮助

您得到的异常与您发布的代码无关。您的异常是关于您在页面回发之间添加或删除的控件。我尝试了此操作,但尚未解决。此外,当我单击“编辑”按钮时,其引发的错误无法加载viewstate。正在加载viewstate的控件树必须与上次请求期间用于保存viewstate的控件树相匹配。好的,您能否提供一个简短完整的示例来说明此问题?如果你把代码文件放在某个地方,我也许能帮上忙。
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            
    }
}