in C#, an array or collection starts at 0, try((DropDownList)e.Item.Cells[7].Controls[0]).SelectedIndex = iSelected;or((DropDownList)e.Item.Cells[6].Controls[0]).SelectedIndex = iSelected;

解决方案 »

  1.   

    经过检查,cells[7]没错,但是Controls[1]检测为Label,所以出错,Controls[0],Controls[2] 在调试命令窗口中都显示为Literal控件,不知为什么?在此模版列中Item项为Label,Edit项为DropDownlist.
    另外,我是在DataGrid1_ItemDataBound 中加的这个语句,不知道是不是和这个有关?如下:
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {
      ...
      if(DataGrid1.EditItemIndex != -1)
         ((DropDownList)e.Item.Cells[7].Controls[1]).SelectedIndex = GetSelectedProduct(e);
      }
      ...